我想在update时检查Column值。如果匹配插入另一个表。 我的表:
我的触发器:
CREATE TRIGGER tr_test
ON test1
FOR UPDATE
AS
SET nocount ON
IF ( Update(sname) )
DECLARE @Name NVARCHAR
DECLARE @id INT
SET @id=@@IDENTITY
SET @Name=(SELECT sname
FROM test1
WHERE id = @id)
IF( @Name = 'Paras' )
BEGIN
INSERT INTO test2
(loginfo)
VALUES ('success')
END
我的更新查询是:
update Test1 set Sname='Paras' where ID=1
当我运行此更新查询时,没有任何事情发生。Test2
表是空的。我认为问题是@@IDENTITY
但不确定。谢谢。
答案 0 :(得分:1)
试试这个:
CREATE TRIGGER tr_test
ON test1
FOR UPDATE
AS
SET nocount ON
IF ( Update(sname) )
DECLARE @Name NVARCHAR
DECLARE @id INT
SET @id=(select id from inserted)
SET @Name=(SELECT sname
FROM inserted
WHERE id = @id)
IF( @Name = 'Paras' )
BEGIN
INSERT INTO test2
(loginfo)
VALUES ('success')
END
但最好这样做,更新可以更新很多行,如果UPDATE匹配很多行,上面的内容会失败,请使用EXISTS:
CREATE TRIGGER tr_test
ON test1
FOR UPDATE
AS
SET nocount ON
IF( EXISTS(select * From inserted where sname = 'Paras' ) )
BEGIN
INSERT INTO test2
(loginfo)
VALUES ('success')
END
inserted
表是UPDATE的新值所在的表的名称,deleted
table是UPDATE的旧值所在的表的名称