【发布时间】:2016-01-18 03:51:00
【问题描述】:
我正在使用存储过程对 Mysql DB 进行 CRUD 操作
DELIMITER $$
CREATE PROCEDURE `transaction_sp` ()
BEGIN
DECLARE exit handler for sqlexception
BEGIN
-- ERROR
ROLLBACK;
END;
DECLARE exit handler for sqlwarning
BEGIN
-- WARNING
ROLLBACK;
END;
START TRANSACTION;
INSERT INTO table_name (id, name, address) values ('1','Test','xpert.com');
SET @LID = LAST_INSERT_ID();
INSERT INTO table_name3 (id, job, responsibilities) values
(@LID,'Sr. Developer','Coding,mentoring etc');
COMMIT;
END
$$
现在,我希望如果第二个 INSERT 语句失败,那么第二个 SQL 语句将不会执行,并且第一个 Insert 应该回滚。
使用我的上述方法,第一笔交易不会回滚。我需要设置任何标志吗?
如何处理?解释清楚的答案将在这里有所帮助。
【问题讨论】:
-
表格使用的引擎是什么?
标签: mysql stored-procedures transactions