sqlsever 表DTG_SUBJECT24072202 想写一个触发器当数据发生新增或者LastModifyTime字段发生变化时往subjecttype_log表写入一条数据,把DTG_SUBJECT24072202 表的ID跟当前时间记录进去
时间: 2024-10-25 19:18:39 浏览: 18
sql-sever.rar_SQL sever_sql的模式定义_修改表模式sql
SQL Server中的触发器是一种特殊的存储过程,它会在特定数据库操作(如INSERT、UPDATE或DELETE)执行后自动运行。为了实现在`DTG_SUBJECT24072202`表中插入新数据或`LastModifyTime`字段更新时向`subjecttype_log`表写入记录,你可以创建一个after update和after insert触发器。这里是一个基本的示例:
```sql
CREATE TRIGGER trg_subjecttype_log_update_insert
ON DTG_SUBJECT24072202
AFTER INSERT, UPDATE
AS
BEGIN
IF EXISTS (SELECT 1 FROM inserted)
-- 插入触发器
INSERT INTO subjecttype_log (ID, LogDateTime)
SELECT i.ID, GETDATE() AS LogDateTime
FROM inserted i;
ELSE IF EXISTS (SELECT 1 FROM deleted)
-- 更新触发器
INSERT INTO subjecttype_log (ID, OldLogDateTime, NewLogDateTime)
SELECT d.ID, d.LastModifyTime, GETDATE()
FROM deleted d;
END;
```
这个触发器会在表`DTG_SUBJECT24072202`的insert和update操作之后运行。如果只有插入操作,那么只会添加新的记录;如果是更新操作,还会同时保存旧的和新的`LastModifyTime`。
阅读全文