部分UPDATE命令

时间:2009-03-05 08:00:30

标签: sql sql-server transactions

我想对一组记录执行UPDATE命令,但它失败了,因为更新后的某些记录会违反表约束。是否有可能以某种方式更新合适的记录?

4 个答案:

答案 0 :(得分:5)

更新语句本身就是原子的,它将全部成功或全部失败。您需要修改SQL以仅更新不会违反约束的行。

答案 1 :(得分:5)

更新行为全部或全部是设计

您可以在Update命令中添加Where子句来检查所有约束,但这会导致代码重复,这不是一件好事

如何使用Cursor或CLR循环一次更新一行?

如果这是多层应用程序的一部分,那么这是您的业务对象需要通过元数据或模式询问了解SQL约束的地方,以便数据验证可以在它到达数据库之前完成

CSLA framework对此有一些好处

答案 2 :(得分:3)

您需要将约束添加到WHERE子句中。

或者为每一行单独运行更新,但这似乎不是一个好主意。

答案 3 :(得分:0)

要添加已发布的一些答案:您可能需要在where子句中使用子查询。喜欢(在伪代码中)

update mytable
set myfield = myval
where not exists (select from some table that would tell you if a constraint is violated for this row)

如果您发布代码,我可以为您提供更多帮助。