SQL 服务器 - 更新具有外键的 table,使用 DELETE/INSERT 而不是 UPDATE
SQL Server - Updating a table that has foreign keys, using DELETE/INSERT instead of UPDATE
我有一个主 table,许多关联的 table 使用 "id" 外键链接到它。
我需要更新此主要内容中的一行 table。
与其一一更新该行的所有字段,不如简单地删除整行并使用新值重新创建它(通过保留原始主键!)。
如果在实际提交事务之前使用相同的主键重新创建行,是否有办法在事务内部删除具有外键约束的此类行?
我试过了,好像不行...
除了在 DELETE 操作之前删除约束之外,我还能做些什么来实现这一点?某种锁?
没有
没有 dropping/disabling 约束,SQL 服务器将强制执行关系并防止您删除引用的行。
可以禁用约束,但启用它会产生开销,SQL服务器必须验证对该键的每个引用,然后才会考虑再次信任关系。
您最好花时间开发一个单独的 update/upsert 函数,而不是每次需要更改记录时都会产生额外的处理开销。
您可以更改外键以使用 CASCADE DELETE,但这有其自身的开销和负担。
我有一个主 table,许多关联的 table 使用 "id" 外键链接到它。
我需要更新此主要内容中的一行 table。
与其一一更新该行的所有字段,不如简单地删除整行并使用新值重新创建它(通过保留原始主键!)。
如果在实际提交事务之前使用相同的主键重新创建行,是否有办法在事务内部删除具有外键约束的此类行?
我试过了,好像不行...
除了在 DELETE 操作之前删除约束之外,我还能做些什么来实现这一点?某种锁?
没有
没有 dropping/disabling 约束,SQL 服务器将强制执行关系并防止您删除引用的行。
可以禁用约束,但启用它会产生开销,SQL服务器必须验证对该键的每个引用,然后才会考虑再次信任关系。
您最好花时间开发一个单独的 update/upsert 函数,而不是每次需要更改记录时都会产生额外的处理开销。
您可以更改外键以使用 CASCADE DELETE,但这有其自身的开销和负担。