I have stored procedure like this:
DECLARE err_code CHAR(5) DEFAULT '00000';
DECLARE msg TEXT;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1
err_code = RETURNED_SQLSTATE, msg = MESSAGE_TEXT;
END;
START TRANSACTION;
INSERT INTO tableA .....;
INSERT INTO tableB .....;
SELECT updateJournal(id) INTO x;
IF err_code != '00000' THEN
ROLLBACK;
INSERT INTO log (msg) VALUES (msg);
ELSE
COMMIT;
END IF;
CREATE FUNCTION updateJournal(orderId INT) return int
BEGIN INSERT INTO tableC ....;
UPDATE tabled ....;
RETURN 1; END
sometimes I get msg error "Deadlock found when trying to get lock; try restarting transaction"
the stored procedure is rollback, but function updateJournal still work (tableC inserted, tableD updated),
can anyone explain why stored procedure is rollback with deadlock error, but function inside stored procedure still committed.
can anyone explain why my stored procedure get deadlock error?