Mysql 事务不起作用



我试图找出这个SQL事务的问题是什么:

START TRANSACTION;
INSERT INTO address VALUES (null, 'Address name', 18);
-- First INSERT statement is CORRECT
INSERT INTO users VALUES (null, 'First_name', 'Last_name', 'username', 'password', '2', 'email@nowhere.com', last_insert_id(), 1);
-- Second INSERT statement is INCORRECT
COMMIT;

尽管第二个查询失败,但第一个 SQL 查询已成功执行。交易的目的是执行所有语句或不执行任何语句。用户和地址表都是InnoDB。我是否正确编写了此交易?

我刚刚解决了问题。我把事务放在过程中,还为SQL异常添加了SQL代码。现在工作正常。

DROP PROCEDURE IF EXISTS insert_user;
DELIMITER //
CREATE PROCEDURE insert_user()
BEGIN
DECLARE exit handler for sqlexception
  BEGIN
    -- ERROR
  ROLLBACK;
END;
START TRANSACTION;
INSERT INTO address VALUES (null, 'Address name', 18);
-- First INSERT statement is CORRECT
INSERT INTO users VALUES (null, 'First_name', 'Last_name', 'username', 'password', '2', 'email@nowhere.com', last_insert_id(), 1);
-- Second INSERT statement is INCORRECT
COMMIT;
END //
DELIMITER ;

最新更新