हम CreatedDate पर डिफ़ॉल्ट है और ट्रिगर
वहाँ बार जब हम स्पष्ट रूप से तिथि निर्धारित करना चाहते हैं के साथ लागू न करें - जैसे अगर हम किसी अन्य स्रोत से डेटा आयात करते हैं।
वहाँ एक जोखिम है कि आवेदन बग सका CreateDate, या उस बात के लिए एक असंतुष्ट डीबीए
(हम गैर DBAs हमारे डीबीएस के लिए सीधी जोड़ने की जरूरत नहीं है) मैं तुम्हें स्तंभ सेट कर सकते हैं लगता है के साथ गड़बड़ CreateDate पर स्तर अनुमतियां। 1 टेबल, ताकि स्तंभ मुख्य तालिका के बाहर था:
एक आधे रास्ते घर में एक सम्मिलित ट्रिगर एक 1 में एक पंक्ति बनाने के लिए हो सकता है। दूसरी तालिका में चयन अनुमतियां हो सकती हैं, जहां मुख्य तालिका में अद्यतन अनुमतियां होती हैं, और इस प्रकार CreateDate में परिवर्तनों को रोकने के लिए अद्यतन ट्रिगर की आवश्यकता नहीं होती है - जो पंक्तियों को सामान्य रूप से अपडेट करते समय कुछ "वजन" निकाल देगा।
मुझे लगता है आप coul/एक अद्यतन है दूसरी मेज पर ट्रिगर DELETE परिवर्तन को रोकने के लिए (जो सामान्य परिस्थितियों में कभी नहीं निष्पादित किया जाएगा, इसलिए "हल्के") एक दर्द की
बिट हालांकि अतिरिक्त तालिका के लिए ... सभी CreateDates - TableName, PK, CreateDate के लिए एक तालिका हो सकती है।अधिकांश डेटाबेस आर्किटेक्ट्स इससे नफरत करेंगे ...
ध्यान रखें कि इसे उपयोगकर्ताओं द्वारा बाईपास किया जा सकता है क्योंकि जब आप वास्तविक मान डालते हैं तो डिफ़ॉल्ट मान को ध्यान में नहीं रखा जाता है। और इसे उपयोगकर्ताओं द्वारा भी अपडेट किया जा सकता है। यह संभवतः पर्याप्त है यदि आप नियंत्रित कर सकते हैं कि SQL क्या चल रहा है (और आप नहीं कर सकते :-) लेकिन यह सुरक्षित नहीं है। – paxdiablo
यह वास्तव में एक अच्छी बात है क्योंकि यदि किसी उपयोगकर्ता के पास एक विशिष्ट तारीख है तो उसे वहां रखने की आवश्यकता है, संभवतया तब तक अनुमति दी जानी चाहिए जब तक कि आपके पास अन्यथा नियम न हो। – James
आदरपूर्वक असहमत, @ जेम्स। क्या आपने सरबान-ऑक्सले के बारे में नहीं सुना है? :-) यदि आपके पास डेटक्रेटेड कॉलम है, तो इसे पंक्ति की तारीख पर सेट किया जाना चाहिए। यदि आप उपयोगकर्ता-परिवर्तनीय कॉलम चाहते हैं, तो इसे डेटक्रेटेडफोरपुर्पोज़ऑफफ्राउड या कुछ समान कहा जाना चाहिए। – paxdiablo