2009-03-05 82 views
2

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

回答

5

行为作为全有或全无是由设计

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

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

如果这是一个多层应用程序的一部分,那么这是你的业务对象需要知道通过元数据或模式审讯你的SQL约束,使数据验证可以做它击中数据库之前

CSLA framework对此有一些好处

5

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

3

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

无论是为每一行分别运行更新,但这似乎不是一个好主意。更新的

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) 

如果您发布代码,我可能会帮助您更多。