SQL更新语句设置相同的值

时间:2014-11-18 14:15:15

标签: sql sql-server sql-update

我正在查看SQL中的存储过程,并且遇到了一个奇怪的更新语句。它是这样的。

UPDATE dbo.Table_name
SET [Column_name] = [Column_name]
WHERE [Column_ID] = '2564-5131'

我无法理解此更新声明的重要性。

我是SQL的新手,所以可能会在这里遗漏一点。

修改

我检查了表格定义中的触发器,如下面的一些评论中提到但没有找到任何内容。

表格定义仅包含这些

  • 主键群集
  • 引用另一个表的外键
  • 具有TinyInt类型的列的约束,以检查值是否在界限内
  • 一列上的非聚集索引

2 个答案:

答案 0 :(得分:0)

这本身没有任何作用,但可能会在表上定义一个触发器,用于执行某些操作的更新。检查触发器的表定义。

答案 1 :(得分:0)

好的,所以我设法弄清楚这个更新的作用,并且想到会在这里记录它。

事实证明,这个确切的更新语句存在于多个存储过程中,并且此非功能更新充当这些存储过程之间的显式锁定。它会导致所有存储过程序列化。

我想这不是最大吞吐量的最佳设计。显然这样做是为了避免在存储过程未被序列化时观察到的许多死锁。