有沒有一種方法,使用觸發器或其他方式,以確保在更新行時總是顯式設置特定字段,即使通過SQL Server Management Studio運行臨時SQL?具體來說,我們的表都有change_note字段,我們總是希望爲每次更新設置該字段。我們考慮和丟棄的東西:在UPDATE語句中需要顯式值嗎?
將change_note設置爲NOT NULL。我們這樣做,但它沒有幫助。一旦change_note具有初始值,您可以根據需要運行儘可能多的UPDATE語句來忘記更新change_note,並且由於之前的值仍位於change_note中,因此NOT NULL仍然很開心。
使用觸發器將change_note的舊版本與change_note的新值進行比較。有時候你想讓change_note和以前一樣。這並不是說我們希望確保change_note發生變化,我們希望確保在任何更新中明確提供它的值。
拒絕運行臨時SQL的權限,並強制每個人只通過存儲過程API更新數據,並將change_note作爲更新相關表的所有SP的必需參數。我們有太多的特別查詢需求。
難住!有任何想法嗎?
謝謝!
一個觸發器應該爲此工作。更多細節將幫助我建議觸發器的內容 – JNappi
例如,假設您有一個標準的ADDRESS表,並帶有一個額外的字段change_note。任何時候ADDRESS表中的任何字段都會更新,必須顯式提供change_note **。有時候顯式提供的change_note會碰巧與行中已有的change_note的值相匹配,這意味着您不能簡單地查找新值和新值之間的差異,以確定顯式提供了change_note。 –