0

SQLServerテーブルにトリガーを作成したいと思います。

テーブルには8つの列があります。それらの1つはですemail。すなわちpeter@msn.com

私が欲しいのは:新しい行がテーブルに挿入されると、トリガーは私のISP列を次のように更新する必要がありますmsn.com

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

ispこれは、すべてのmyを最後の値で更新しています。しかし、私は挿入ごとに1つを更新したかった。

4

1 に答える 1

3

これは、ISP列でNULL値が許可されている場合に機能します

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
于 2012-04-06T19:04:55.650 に答える