Nan*_*nda 6 sql t-sql sql-server triggers
我有这样的表结构:
create table status_master
(
Name varchar(40)
status varchar(10)
)
Run Code Online (Sandbox Code Playgroud)
我需要为状态列创建触发器,如果状态列值更新值为FAIL,则触发器调用一个插入commant,如:
insert into temp value('s',s's')
Run Code Online (Sandbox Code Playgroud)
你能不能请任何人给我解决这个问题的想法?
不确定你真正想要实现的目标 - 但在SQL Server中,你有两种类型的触发器:
SQL Server没有其他RDBMS具有的BEFORE INSERT/UPDATE/DELETE触发器.
您可以拥有任意数量的AFTER触发器,但每个操作只有一个INSTEAD OF触发器(INSERT,UPDATE,DELETE).
更常见的情况是AFTER触发器,例如:
CREATE TRIGGER trgCheckInsertedValues
ON status_master
AFTER INSERT
AS
BEGIN
INSERT INTO dbo.temp(field1, field2, field3)
SELECT i.Name, i.Status
FROM inserted i
WHERE i.Status = 'FAIL'
END
Run Code Online (Sandbox Code Playgroud)
在这里,我正在检查"inserted"伪表,其中包含插入表中的所有行,对于包含"status = FAIL"的每一行,您将在"temp"表中插入一些字段.
再一次 - 不确定你真正想要的细节 - 但这将是如何在SQL Server T-SQL代码中做到这一点的粗略概述.
渣
您正在寻找的是一个 INSTEAD OF INSERT、UPDATE 触发器。在触发器中,您尝试在 try-catch 中插入或更新自己。如果出错,则将这些值插入到其他表中(假设它是某种日志记录表)。
归档时间: |
|
查看次数: |
7628 次 |
最近记录: |