【发布时间】:2019-05-25 18:16:48
【问题描述】:
我有这张桌子:
TableAB
{
IDTableA;
IDTableB;
}
我在表格中有一行,(1,2)。现在我想插入一些其他值,并且我想在事务中进行。我用这个:
begin
insert into TableAB (IDTAbleA, IDTAbleB) VALUES(1,2);
insert into TableAB (IDTAbleA, IDTAbleB) VALUES(1,3);
insert into TableAB (IDTAbleA, IDTAbleB) VALUES(1,3);
commit
第一次插入时出现完整性错误,但第二次和第三次插入时,会将值插入表中。
我如何使用事务并且第一个失败,为什么它会插入另外两行?我想在事务中,如果某些事情失败了,一切都会中止。那么在这种情况下,使用事务和不使用事务有什么区别呢?
谢谢。
【问题讨论】:
-
“我认为在事务内部,如果某些事情失败了,一切都会中止。” -- 对某些(大多数?)DBMS 来说是正确的。对于 SQL Server,您可能需要更改设置,请参阅stackoverflow.com/questions/1749719/…
标签: sql-server tsql transactions