假设我要执行三条sql语句 :insert into user1 ( id , name , pwd ) values( null , 111 , 111 ) ;insert into user2 ( id , name , pwd ) values( null , 222 , 222 ) ;insert into user3 ( id , name , pwd ) values( null , 333 , 333 ) ;当第二条执行失败时 , 撤销第一条的提交 . 当第三条执行失败时 , 撤销第二条的提交 , 同时让第一条提交 :这事务怎么写 ?
2 回答
已采纳
LIANHK
TA贡献78条经验 获得超17个赞
折返点
SAVEPOINT adqoo_1
ROLLBACK TO SAVEPOINT adqoo_1
发生在折返点 adqoo_1 之前的事务被提交,之后的被忽略
可以每一条执行后都 SAVEPOINT
-- 第一步: insert into user1 ( id , name , pwd ) values( null , 111 , 111 ); SAVEPOINT point_1; -- 第二步: insert into user2 ( id , name , pwd ) values( null , 222 , 222 ); SAVEPOINT point_2; -- 第三步: insert into user3 ( id , name , pwd ) values( null , 333 , 333 ); SAVEPOINT point_3;
然后哪一步失败就 ROLLBACK TO SAVEPOINT XXX
如第二步失败:
ROLLBACK TO SAVEPOINT point_1;
望采纳
人笨嫌刀钝
TA贡献100条经验 获得超24个赞
begin; insert into user1 ( id , name , pwd ) values( null , 111 , 111 ) ; insert into user2 ( id , name , pwd ) values( null , 222 , 222 ) ; insert into user3 ( id , name , pwd ) values( null , 333 , 333 ) ; end;
添加回答
举报
0/150
提交
取消