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

有帮助吗?

解决方案

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

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

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

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

CSLA框架对此有一些好处

其他提示

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

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

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

要添加已发布的一些答案:您可能需要在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)

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top