0

这可能是一个简单的问题,但我正在为一家公司做一些插入,并且一些插入“可能”已经存在。所以它会失败,因为主键值已经存在等等......

问题是.....其余的更新/插入会通过吗?还是整个事情都会失败?

有没有办法直接覆盖它,或者如果没有,则继续脚本的其余部分?

谢谢

4

2 回答 2

0

如果您正在执行基于集合的操作:

INSERT <foo>
SELECT <stuff>

然后操作是原子的——要么全部工作,要么都不工作(这是一件好事)。但是,如果您正在执行基于游标的单项插入,则插入失败可能不会中止批处理。但是,这非常慢。

您真正想要的是使用 MERGE 语句——假设您使用的是 sql server 2008 或更高版本。

或者,您可以在 INSERT 语句中添加 WHERE NOT EXISTS () 子句,以确保您不会尝试插入已经存在的行。

在这里阅读:http ://technet.microsoft.com/en-us/library/bb510625.aspx

于 2013-06-21T14:18:38.993 回答
0

您可以使用TRY/CATCH 块或在使用 INSERT 之前验证行是否已存在。

于 2013-06-21T14:14:12.517 回答