INSERT INTO table_a (name) VALUES (‘a1’),(‘a2’); INSERT INTO table_b (name) VALUES (‘b1’),(‘b2’); INSERT INTO table_c (a_id,b_id) VALUES (1,1),(2,2); 2.测试三段提交 通过以下代码测试三段提交: delimiter // CREATE PROCEDURE commit_task(IN a_name VARCHAR(50),IN b_name VARCHAR(50), OUT result VARCHAR(50)) BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; SET result = ‘fl’; END;
START TRANSACTION;
SELECT id INTO @a_id FROM table_a WHERE name = a_name FOR UPDATE; IF @a_id = ” THEN INSERT INTO table_a (name) VALUES (a_name); SET @a_id = LAST_INSERT_ID(); END IF;
SELECT id INTO @b_id FROM table_b WHERE name = b_name FOR UPDATE; IF @b_id = ” THEN INSERT INTO table_b (name) VALUES (b_name); SET @b_id = LAST_INSERT_ID(); END IF;
INSERT INTO table_c (a_id,b_id) VALUES (@a_id,@b_id);