需要是這樣,有幾個資料,a、b、c,需要把資料a插入到表1,然后取到表1自動生成的id,與b一起插入到表2;然后id與c一起插入到表3。
我分三個陳述句寫入,出現一個問題,有時候第一個mysql執行了,但是第二個沒有執行成功,這樣就導致資料的缺失,
所以想,是不是可以把這三個陳述句合成一句,然后一起提交,成功就一起成功,失敗就一起失敗
如果可以的話,這個陳述句怎么寫呢?
uj5u.com熱心網友回復:
1、用存盤程序,里邊加上事務,這三個操作在一個事務中,成功都成功,失敗都失敗。2、用last_insert_id 獲取插入到表中生成的自增id ,作為資料插入下一個表,
uj5u.com熱心網友回復:
能幫寫個例子嗎?我是新手,對存盤程序、事務 不懂,
謝謝啦
uj5u.com熱心網友回復:
沒驗證
DROP PROCEDURE IF EXISTS test_sp1
CREATE PROCEDURE test_sp1(IN str_a varchar(100), IN str_b varchar(100), IN str_c varchar(100))
BEGIN
DECLARE t_error INTEGER DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
START TRANSACTION;
INSERT INTO test1 VALUES(str_a);
SET Result_ID=LAST_INSERT_ID();
INSERT INTO test2 VALUES(str_b, Result_ID);
INSERT INTO test3 VALUES(str_c, Result_ID);
IF t_error = 1 THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END;
CALL test_sp1('aa', 'bb', 'cc');
uj5u.com熱心網友回復:
可以先了解一下資料庫事務,自己動手理解更深刻uj5u.com熱心網友回復:
謝謝~
uj5u.com熱心網友回復:
首先你看下自己資料庫的表要是ENGINE=InnoDB
InnoDB才支持事務。然后你百度php事務~
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/113876.html
標籤:MySQL
