2011-10-12 14 views
38

यह जानना अच्छा होगा कि मेरी SQL सर्वर तालिका में modifiedDate कॉलम को स्वत: अद्यतन करने के लिए एक ट्रिगर कैसे बनाया जाए:कैसे करें: SQL सर्वर 2008 के साथ स्वत: अद्यतन संशोधित दिनांक के लिए ट्रिगर बनाएं

तालिका टाइमएन्ट्री

Id (PK) 
UserId (FK) 
Description 
Time 
GenDate 
ModDate 

ट्रिगर कोड:

+ TR_TimeEntry_UpdateModDate() 
+ TR_TimeEntry_InsertGenDate() 

अद्यतन ModDate के लिए एक उदाहरण अच्छा होगा।

अग्रिम धन्यवाद!

जूलियन

+0

यह एक ट्रिगर होने के लिए है? – gbn

उत्तर

72

मेरे दृष्टिकोण:

  • GETDATE() के एक मूल्य के साथ ModDate स्तंभ पर एक डिफ़ॉल्ट बाधा परिभाषित - इस INSERT मामले संभालती

  • एक AFTER UPDATE ट्रिगर करने के लिए है ModDate कॉलम

  • 012 अपडेट करें

कुछ की तरह:

CREATE TRIGGER trg_UpdateTimeEntry 
ON dbo.TimeEntry 
AFTER UPDATE 
AS 
    UPDATE dbo.TimeEntry 
    SET ModDate = GETDATE() 
    WHERE ID IN (SELECT DISTINCT ID FROM Inserted) 
+4

यह भी आपके टाइमज़ोन आवश्यकताओं के आधार पर 'getUtcDate()' पर विचार करने लायक है। – Rory

+35

और यदि कोई सोच रहा था, मेरे जैसे, चाहे वह खुद को कॉल कर सके, तो एक RECURSIVE_TRIGGERS डेटाबेस विकल्प है जिसे आप सामान्य रूप से बंद कर देते हैं जो इस तरह के ट्रिगर को स्वयं कॉल करने से रोकता है। http://msdn.microsoft.com/en-us/library/ms190739.aspx – Rory

+1

मुझे यह नहीं मिला। मुझे इसे रोकने के लिए 'ONT RECURSIVE_TRIGGERS' को' ON' या 'OFF' करना चाहिए? – MarceloBarbosa

संबंधित मुद्दे