डालने के बाद ट्रिगर का उपयोग करें। inserted
. से जुड़ें Tb
. के लिए छद्म तालिका प्राथमिक कुंजी पर। फिर desc के मान अपडेट करें। कुछ इस तरह:(लेकिन संकलित नहीं हो सकता)
CREATE TRIGGER TbFixTb_Trg
ON Tb
AFTER INSERT
AS
BEGIN
UPDATE Tb
SET DESC = SomeTransformationOf(i.DESC)
FROM Tb
INNER JOIN inserted i on i.Id = Tb.Id
END
GO
यह ट्रिगर इंसर्ट होने के बाद होता है, लेकिन insert
. से पहले होता है बयान पूरा करता है। तो नए, गलत मान पहले से ही लक्ष्य तालिका में रखे गए हैं। इस ट्रिगर को बदलने की आवश्यकता नहीं होगी क्योंकि कॉलम जोड़े जाते हैं, हटाए जाते हैं, आदि।
चेतावनी ट्रिगर आग के बाद से पहले अखंडता बाधाओं को लागू किया जाता है। तो आप डीईएससी के उचित रूप को लागू करने के लिए चेक बाधा नहीं डाल सकते हैं। क्योंकि इससे ट्रिगर से पहले कुछ भी ठीक करने का मौका होने से पहले कथन विफल हो जाएगा। (कृपया इस पर भरोसा करने से पहले इस अनुच्छेद को दोबारा जांचें। मुझे एक ट्रिगर लिखे हुए कुछ समय हो गया है।)