首页 > 解决方案 > SQL Server:检测列更改

问题描述

我正在尝试检测列中的任何更改。让我准确描述我的问题。

假设我有 400 个存储过程,其中 20 个更改了 table 中命名ModDate的列Users。但是ModDate专栏不足以让我实现我的目标。我需要一个脏位列让我们说IsChanged

我的解决方案是查找并检查更新的程序,Users.ModDate并将这些程序也更改为更新IsChanged。但这在时间上效率不高。另外,我可能会错过一些程序,这会导致问题。

所以,我的问题;是否可以更改表/列以创建“更改时”触发器?当任何过程更改 的值时Users.ModDate,SQL Server 会IsChanged自动将该列更新为 1。

感谢您的回答。

标签: sqlsql-server

解决方案


您可以在列上为不同的 crud 事件创建触发器。

https://www.sqlservertutorial.net/sql-server-triggers/sql-server-create-trigger/

`CREATE TRIGGER [schema_name.]trigger_name ON table_name AFTER {[INSERT],[UPDATE],[DELETE]} [NOT FOR REPLICATION] AS {sql_statements`}

推荐阅读