我正在查看SQL中的存储过程,并遇到了一个奇怪的更新语句。事情是这样的。
UPDATE dbo.Table_name
SET [Column_name] = [Column_name]
WHERE [Column_ID] = '2564-5131'
我不明白这个更新声明的意义。
我是SQL的新手,所以这里可能错过了一点。
编辑:
我检查了表定义的触发器,如下面的一些评论中所述,但没有找到任何东西。
表定义仅包含这些
- 主键集群
- 引用另一个表的外键
- TinyInt 类型的列的约束,用于检查值是否在边界内
- 和一列上的非聚集索引
这本身什么都不做,但表上可能为将执行某些操作的更新定义了一个触发器。 检查触发器的表定义。
好的,所以我设法弄清楚了该更新的作用,并认为会在此处记录它。
事实证明,此确切的更新语句存在于多个存储过程中,并且此非功能性更新充当这些存储过程之间的显式锁。它会导致序列化所有存储的进程。
我想这不是实现最大吞吐量的最佳设计。显然,这样做是为了避免在存储的进程未序列化时观察到的许多死锁。