मैं एसक्यूएल सर्वर 2000 पर बनाए गए विरासत अनुप्रयोग में कुछ बदलाव कर रहा हूं, कहने की जरूरत नहीं है कि मैं केवल डर में पूर्ण न्यूनतम करना चाहता हूं कि यह सब कुछ अलग हो सकता है।अद्यतन ट्रिगर की स्थापना - क्या यह संभव है?
मेरे पास उपयोगकर्ताओं की एक बड़ी तालिका है, tbUsers, IsDeleted के लिए बीआईटी ध्वज के साथ। मैं अपने संग्रह तालिका tbDeletedUsers में सभी मौजूदा और भविष्य IsDeleted = 1 उपयोगकर्ता रिकॉर्ड को संग्रहीत करना चाहता हूं।
वर्तमान में हटाए गए उपयोगकर्ताओं को स्थानांतरित करना सीधे आगे है, हालांकि मैं किसी भी भविष्य के उपयोगकर्ताओं को स्थानांतरित करने का एक तरीका चाहता हूं जहां IsDeleted ध्वज सेट किया गया हो। मैं कॉलम पर ट्रिगर करने के बाद मानक का उपयोग कर सकता हूं, हालांकि मैं टीबीयूसर टेबल पर कुछ बाधाओं को जोड़ने की योजना बना रहा हूं जो इसका उल्लंघन करेगा, जो मैं चाहता हूं कि अद्यतन के मेरे इंस्टॉलेशन के लिए आग लगने के लिए और रिकॉर्ड तालिका में रिकॉर्ड को स्थानांतरित करने के लिए क्या है?
मुझे लगता है कि मेरा प्रश्न है ... क्या एक व्यक्तिगत कॉलम के अपडेट पर अद्यतन ट्रिगर के इंस्टाल को ट्रिगर करना संभव है? यह मेरे पास अब तक है:
CREATE TRIGGER trg_ArchiveUsers
INSTEAD OF UPDATE ON tbUsers
AS
BEGIN
...
END
GO
यदि ऐसा कोई उदाहरण (SQL 2000 संगत) की बहुत सराहना की जाएगी!
अपडेट (कॉलमनाम) SQL सर्वर में मौजूद नहीं है। इसके बजाय, COLUMNS_UPDATED (कॉलमनाम) का उपयोग करें। http://msdn.microsoft.com/en-us/library/ms186329.aspx –
टिप्पणी के लिए धन्यवाद। आप सही हैं, SQL सर्वर में कोई UPDATES() फ़ंक्शन नहीं है, न ही UPDATED(), जैसा कि मैंने प्रारंभ में लिखा था। इसे वास्तव में [अद्यतन()] कहा जाता है (http://msdn.microsoft.com/en-us/library/ms187326.aspx)। मेरे जवाब को संपादित करना और मेरी गलती को मेरे ध्यान में लाने के लिए धन्यवाद। –
और आपको भी गलत समझा जाता है, क्योंकि COLUMNS_UPDATED() पैरामीटर स्वीकार नहीं करता है। यह ट्रिगर को बुलाए गए बयान से प्रभावित सभी कॉलम को प्रतिबिंबित करने वाला थोड़ा मुखौटा देता है। मैंने कभी भी उस फ़ंक्शन का उपयोग नहीं किया है, हालांकि, मैन्युअल से, मुझे लगता है कि मुझे इसका कोई अंदाज़ा नहीं है कि इसका उपयोग कैसे किया जाए। –