2013-07-21 2 views
2

У меня есть столбец с именем htmlContent который stores HTML Content в таблице EEmailData и столбец с именем EEmailDataID, который unique ID из этой таблицы, или я могу сказать primary key of this table.Как реализовать триггер после вставки?

Теперь то, что я хочу сделать, это я хочу create a trigger, который хотел бы получить этот первичный ключ из этой таблицы и вставьте это EEmailDataID в колонку htmlContent в определенном месте.

Я думаю, что это произойдет SUBSTRING функция. Может ли кто-нибудь предложить мне другое решение?

+0

его SQL Server 2008. –

+1

'вставьте этот EEmailDataID в столбец htmlContent в определенном месте'. не могли бы вы объяснить это? do yo хотите добавить id в столбец htmlContent? – Nithesh

+0

Предположим, что этот столбец htmlcontent содержит данные, подобные этому ** Invite Friends ** Теперь я хочу добавить EEmailDataID после [GuestInviteFwd]. –

ответ

0

Для этого нужно добавить id, где вы хотите заменить Primary key value

Eg: <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 [email protected] 

END 

Теперь после запуска uArAiAd заменяется EEmailDataID

также вы можете достичь этого без триггера. Просто сделайте следующее после вставки.

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

    UPDATE EEmailData 
    SET htmlContent=REPLACE(@html,'uArAiAd',@id) 
    WHERE [email protected] 
Смежные вопросы