假設我有一個表my_table(id, x, y)
。如果x
已經是null
,我想寫一個觸發器以防止更新y
列並將其設置爲non-null
值。由於SQL Server沒有更新之前的觸發器,這怎麼辦呢?顯然我們可以使用instead of
觸發器來實現這個目的,但是我們如何檢查舊的和當前的值並決定是否應該提出錯誤或讓更新正常執行?如何爲SQL Server編寫此觸發器?
例子:
讓我們假設我們有這個行中的DB:
1, null, null
那麼這應該失敗(提高誤差)
update my_table set y = 'blah' where id = 1;
但是,這應該會成功:
update my_table set y = null where id = 1;
我知道這個例子不是很有意義,但它與我試圖實現的類似。
忍者 - 僅僅是明確的,如果'x'是'null',你是什麼想要發生在'y'?將其設置爲任意的非空值? – LittleBobbyTables 2010-11-10 02:25:37
@LittleBobbyTables:請參閱更新的問題。 – Behrang 2010-11-10 02:41:46