SQL触发器:在更新主键时,如何确定哪个"已删除"记录与"插入"记录相对应?

Zac*_*ott 6 sql t-sql triggers sql-server-2005

假设我知道更新主键是坏的.

还有其他问题暗示insertedupdated记录表的位置匹配(第一个匹配另一个匹配.)这是事实还是巧合?

当主键在更新时发生更改时,是否有任何可以将两个表连接在一起的内容?

gbn*_*gbn 8

没有匹配插入+的删除的虚拟表行的位置.

不,你不能匹配行

一些选择:

  • 还有另一个唯一不变的(用于更新)键来链接行
  • 限制单行操作.
  • 使用带有OUTPUT子句的存储过程来捕获键前后
  • 带有OUTPUT子句的INSTEAD OF触发器(TBH不确定你是否可以这样做)
  • 禁止主键更新(在评论后添加)

  • +1特别是关于行位置的部分.这是一种同样的神话,导致人们相信`SELECT`没有`ORDER BY`将始终以相同的方式行事. (3认同)
  • +1禁止主键更新,如果这是您的情况的选项. (2认同)