2012-04-06 154 views
0

我想在SQL Server表上创建触发器。在SQL Server表上创建触发器

表有8列。其中之一是email。即[email protected]

我要的是:当一个新行插入表,触发器应与msn.com

CREATE TRIGGER TIGUPDATEISP ON SUBS 
    FOR INSERT 
    AS 
    UPDATE SUBS 
    SET ISP = SELECT RIGHT(EMAIL, LEN(EMAIL) - CHARINDEX('@', EMAIL) FROM INSERTED) 

这是更新所有我isp与最后的值更新我的ISP列。但是,我想根据插入更新一个。

回答

2

如果ISP列允许空值

CREATE TRIGGER TIGUPDATEISP ON Subs 
    FOR INSERT 
AS 
BEGIN 

    SET NOCOUNT ON; 

    UPDATE SUBS 
     SET ISP = (SELECT RIGHT(EMAIL, LEN(EMAIL) - CHARINDEX('@', EMAIL)) 
     FROM INSERTED 
     WHERE SUBS.ID = INSERTED.ID) 
    FROM INSERTED 
    WHERE SUBS.Id = INSERTED.ID 

END 

这将工作,如果ISP列不允许使用NULL

CREATE TRIGGER TIGUPDATEISP ON Subs 
    INSTEAD OF INSERT 
AS 
BEGIN 

    SET NOCOUNT ON; 

    INSERT Subs (EMAIL, Isp) 
    SELECT EMAIL, RIGHT(EMAIL, LEN(EMAIL) - CHARINDEX('@', EMAIL)) FROM INSERTED 

END 
+0

天才这将工作。谢谢。 – Peter 2012-04-06 19:38:20