2010-02-11 35 views

回答

2

根據MSDN,觸發器可用於「擴展表間的參照完整性」。,這正是你想要做的。因此,只要使用FOR UPDATE觸發器並在舊值不爲空但新值爲時發出錯誤。

假設你有一個int類型的空列名爲SomeId,你的表稱爲SomeTable以下觸發器會做這項工作:

CREATE TRIGGER CheckTrigger ON SomeTable 
FOR UPDATE 
AS 
DECLARE @OldId int, 
     @NewId int 
BEGIN 
    SELECT @OldId = SomeId FROM deleted 
    SELECT @NewId = SomeId FROM inserted 

    IF NOT @OldId IS NULL AND @NewId IS NULL 
    BEGIN 
     RAISERROR ('No!!!!', 10,1) WITH NOWAIT 
     ROLLBACK TRANSACTION 
    END 
END; 
1

觸發器將是你最好的選擇,在這種情況下

1

那麼,我想到的第一件事就是創建一個觸發器,只有在列爲空且新值不爲空時才更新列。

相關問題