需要是这样,有几个数据,a、b、c,需要把数据a插入到表1,然后取到表1自动生成的id,与b一起插入到表2;然后id与c一起插入到表3。
我分三个语句写入,出现一个问题,有时候第一个mysql执行了,但是第二个没有执行成功,这样就导致数据的缺失,所以想,是不是可以把这三个语句合成一句,然后一起提交,成功就一起成功,失败就一起失败如果可以的话,这个语句怎么写呢?
我分三个语句写入,出现一个问题,有时候第一个mysql执行了,但是第二个没有执行成功,这样就导致数据的缺失,所以想,是不是可以把这三个语句合成一句,然后一起提交,成功就一起成功,失败就一起失败如果可以的话,这个语句怎么写呢?
2、用last_insert_id 获取插入到表中生成的自增id ,作为数据插入下一个表,
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');
ENGINE=InnoDB
InnoDB才支持事务。然后你百度php事务~