多个SQL命令只有在全部通过时才能执行

时间:2016-01-22 03:51:20

标签: sql

所以我想在不同的表中插入2个SQL。

一张插入表A,一张插入表B。

我先插入表A,然后插入表B.

我想确保如果由于某种原因,表B中的插入失败(永远不应该),那么表A中的插入将被回滚。

建议的方法是什么,为什么我似乎从来没有在任何示例代码中看到这个?

由于

2 个答案:

答案 0 :(得分:3)

这称为transaction,大多数数据库都支持显式事务。

示例语法为:

begin transaction
    insert into tableA . . . 
    insert into tableB . . .
commit transaction;

具体语法可能因数据库而异。但意思是相同的:要么整个交易成功,要么失败。

答案 1 :(得分:2)

您需要使用Transaction,这就是交易的原因。提供无害的。示例代码为

create procedure usp_insert
as
begin

begin transaction
insert into tableB ....;
insert into tableA ....;

commit;

if error
rollback;
end