存储过程里比如我
insert tb1 select '1','2','3'
insert tb2 select '4','5','6'
这2条语句 如果我只执行一条的话我后面跟一个if(@@error<>0)来判断结果 那现在有2条的话再这样写如果出错了是不是不知道错的是哪一个了 有没有什么让他们要么同时成功 要么失败一个的话都算失败
如果有一个失败,比如id被占用,应该会出现异常,这样,2个sql是一个事务里,应该会同时成功,同时失败的。你自己试一下
BEGIN TRANSACTION; #启动事务
insert tb1 select '1','2','3';
insert tb2 select '4','5','6';
COMMIT; #提交事务,事务中间的要嘛同时成功,否则回滚到事务开始的状态
IF @ROWCOUNT>0
print '插入成功'
else
print '插入失败,将回滚'
if(@@error>1)
可以使用数据库事务的原子性特性,也就是i把这两条语句放在一个事务里面,这样就是妖魔都成功,要末都失败,跟你的要求一样,望采纳。
事务使用的语法https://www.cnblogs.com/kissdodog/p/3169788.html
begin try
begin transaction
insert tb1 select '1','2','3'
insert tb2 select '4','5','6'
commit transaction
end try
begin catch
if @@TRANCOUNT>0 rollback transaction
end catch