2014-05-21 174 views
0

我想爲在INSERT之前使用的一個表創建觸發器。爲「插入前」創建觸發器

我想檢查兩列是否爲NULL,如果它們是NULL否則提出錯誤INSERT數據。

到目前爲止,我有這樣的:

CREATE TRIGGER INS_TABLE_1 
ON mytable 
FOR INSERT 
AS 
BEGIN 

    IF (column1 IS NULL OR column2 IS NULL) 
    BEGIN 
     RAISERROR ('You are not allowed to Add These Data.', 10, 11) 
    END 
    ELSE 
     INSERT INTO mytable (column1,column2,column3) 
END 

你能幫幫我嗎?

+0

SQL Server沒有'BEFORE INSERT'觸發器。你可以有一個'ON INSERT'(相當於一個'AFTER INSERT'),或者你可以有一個'INSTEAD OF INSERT'觸發器。 –

+1

如果你不希望它們爲空,爲什麼這些字段是可空的? – Stijn

+0

是的,但我想提出自己的錯誤 – user3393046

回答

1

使用instead triggerinserted table像下面,並嘗試。

CREATE TRIGGER INS_TABLE_1 
ON mytable 
INSTEAD OF INSERT 
AS 
BEGIN 
    DECLARE @fn varchar(50),@ln varchar(50) 
    SELECT @fn=column1 ,@ln=column12 from inserted 
    IF (@fn IS NULL OR @ln IS NULL) 
    BEGIN 
     RAISERROR ('You are not allowed to Add These Data.', 10, 11) 
    END 
    ELSE 
     INSERT INTO mytable (column1 ,column2) values (@fn,@ln) 
END 

期間INSERTUPDATE語句影響的行插入表中存儲的副本。而不是觸發器用觸發器定義替換當前的INSERT。