假设我知道更新主键是坏事。
还有其他问题暗示inserted
和updated
表记录按位置匹配(第一个匹配另一个匹配。)这是事实还是巧合?
当主键在更新时发生更改时,是否有任何可以将两个表连接在一起的内容?
答案 0 :(得分:8)
插入+删除的虚拟表行位置无匹配。
不,你不能匹配行
一些选项:
答案 1 :(得分:2)
每个表都允许有一个标识列。标识列不可更新;插入记录时(或添加列时)会为它们分配值,并且它们永远不会更改。如果主键是可更新的,则它不能是标识列。因此,表中有另一列是标识列,或者您可以添加一列。没有规则说明标识列必须是主键。然后在触发器中,具有相同标识值的插入和更新中的行是同一行,并且您可以支持一次更新多行上的主键。
答案 2 :(得分:1)
是 - 在您要更新的表格中创建一个“old_primary_key”字段,并先填充它。
您无法匹配插入和删除的psuedo表记录键 - 即使您将数据存储在某个日志表中也是如此。
我猜或者,您可以创建一个单独的日志表来跟踪对主键(旧键和新键)的更改。这可能比我正在更新的表中添加字段更有用,因为它可以让您跟踪给定记录的多个更改。我想,这取决于你的情况。
但是那样说 - 在你做任何事之前,请找一个粉笔板写下这100次:
我知道更新主键很糟糕 我知道更新主键很糟糕 我知道更新主键很糟糕 我知道更新主键很糟糕 我知道更新主键很糟糕 ...
:-)(开玩笑)