插入后如何实现触发器?

时间:2013-07-21 14:10:11

标签: sql-server sql-server-2008 triggers

我有一个名为htmlContent的列stores HTML ContentEEmailDataEEmailDataID列,该列是此表的unique ID,或者我可以说{ {1}}

现在我想要做的是primary key of this table.,它会从此表中获取此主键,并在特定位置的create a trigger列中插入此EEmailDataID

我认为这将通过htmlContent函数进行。任何人都可以向我推荐一些其他解决方案吗?

1 个答案:

答案 0 :(得分:0)

为此,您需要添加id,以替换Primary key value

例如:<a href="localhost:19763/BitBucket/GUEST/... ?GuestInviteFwd=uArAiAd

并使用以下触发器

CREATE TRIGGER EEmailData_Trigg ON EEmailData
AFTER INSERT
AS
IF EXISTS (SELECT top(1)*
           FROM EEmailData p 
           JOIN inserted AS i 
           ON p.EEmailDataID = i.EEmailDataID 
          )
BEGIN
DECLARE @html VARCHAR(MAX),@id INT
SELECT @html=htmlContent ,@id=EEmailData 
FROM EEmailData 
WHERE EEmailDataID =(SELECT TOP(1) EEmailDataID FROM inserted)

UPDATE EEmailData
SET htmlContent=REPLACE(@html,'uArAiAd',@id)
WHERE EEmailDataID=@id

END

现在,触发器uArAiAd被EEmailDataID替换

你也可以在没有触发的情况下实现这一点。 插入后只需执行以下操作。

DECLARE @html VARCHAR(MAX),@id INT
--insert statements
SET @id=SCOPE_IDENTITY()
SELECT @html=htmlContent ,@id=EEmailData 
    FROM EEmailData 
    WHERE EEmailDataID =@id

    UPDATE EEmailData
    SET htmlContent=REPLACE(@html,'uArAiAd',@id)
    WHERE EEmailDataID=@id