sql server触发器表中任意字段更新都新增一条记录
时间: 2024-10-13 13:05:58 浏览: 36
SQL Server 中的触发器是一种特殊的存储过程,它会在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行。如果你想创建一个触发器,使得当表中的任意字段被更新时,在另一个表中新增一条记录,你可以按照以下步骤设置:
首先,假设你有一个名为`OriginalTable`的表,你想在其更新后记录到`LogTable`中,可以编写这样的触发器:
```sql
CREATE TRIGGER Trg_OriginalTable_Update
ON OriginalTable
AFTER UPDATE
AS
BEGIN
INSERT INTO LogTable
(
UpdatedRecordID,
FieldThatChanged,
OldValue,
NewValue,
UpdateDateTime
)
SELECT
inserted.ID AS UpdatedRecordID,
column_name AS FieldThatChanged,
deleted.column_name AS OldValue,
inserted.column_name AS NewValue,
GETDATE() AS UpdateDateTime
FROM inserted
FULL OUTER JOIN deleted ON inserted.ID = deleted.ID
WHERE EXISTS (SELECT * FROM inserted WHERE column_name <> deleted.column_name)
END;
```
在这个例子中,`column_name`应该替换为你想要监控更新的实际列名,`Inserted`是新插入的数据行,`Deleted`是旧数据行。触发器会比较新旧值是否不同,如果不同则将更新信息插入到`LogTable`。
阅读全文