पंक्ति को संशोधित करने पर दिनांक फ़ील्ड और समय फ़ील्ड को अद्यतन करने वाला ट्रिगर कैसे बनाएं?


10

मैंने testtableडेटाबेस के अंदर एक तालिका बनाई testbaseहै जिसमें निम्नलिखित संरचना है:

product_no (int, not null)
product_name (varchar(30), not null)
price (money, null)
expire_date (date, null)
expire_time (time(7), null)

हालाँकि, मैं ऐसा ट्रिगर कैसे लिखूं कि यह उस विशेष पंक्ति को संशोधित कर देगा (या नई जानकारी के साथ अपडेट किया गया है) और expire_dateक्षेत्र में संशोधन की तारीख और क्षेत्र में संशोधन का समय रिकॉर्ड करेगा expire_time? (या यदि यह संभव है?)


क्या आपने देखा है कि ट्रिगर कैसे बनाया जाता है?

हाँ, मैंने देखा है कि कैसे ट्रिगर बनाया जाता है (Ref: msdn.microsoft.com/en-us/library/ms189799(v=sql.105).aspx ) लेकिन एक बात मुझे परेशान कर रही है कि कोई व्यक्ति UPDATE कैसे सम्मिलित करता है पंक्ति के लिए कथन जो शर्त को सही WHERE id = Changed_Row_ID
जैक

जवाबों:


8

यह काफी आसान होगा लेकिन मैं वास्तव में कमांड के तर्क को बदलने की सिफारिश करूंगा जो डेटा को सम्मिलित / अपडेट कर रहा है ताकि यह इस बिंदु पर अतिरिक्त जानकारी को जोड़ता है।

हालाँकि, क्या आपको एक ट्रिगर के साथ आगे बढ़ना चाहिए जो आप कुछ इस तरह से कर सकते हैं:

create trigger my_trigger
on my_table
after insert, update
as
begin
declare @dt datetime = getdate();
update a
set expire_date = CONVERT(DATE, @dt, 101),
    expire_time = CONVERT(TIME, @dt)
from my_table as a
join inserted as b 
on a.product_no = b.product_no; 
end
go  

यह उन पंक्तियों का INSERTEDपता लगाने के लिए तालिका का उपयोग करता product_noहै जिन्हें परिवर्तित / बनाया गया है। आप नीचे दिए गए लिंक पर ट्रिगर के बारे में अधिक जानकारी प्राप्त कर सकते हैं:

http://msdn.microsoft.com/en-us/library/ms189799.aspx

मैं आशान्वित हूं कि इससे आपको सहायता मिलेगी।


मैंने कभी नहीं सोचा था कि एमएस एसक्यूएल वास्तव में नामक एक तालिका बनाएगा inserted। तो, क्या इसका मतलब यह है कि ऐसा करने के लिए अपने स्वयं के डेटाबेस तालिका के रूप में नाम insertedऔर नहीं होना सुरक्षित होगा deleted?
जैक

1
हाँ मैं बस से बचने के भ्रम को ;-) इन नामों के साथ अपने स्वयं टेबल नहीं होने की सलाह देते हैं
Mr.Brownstone

ट्रिगर ट्रिगर मैनुअल पेज पर आप सम्मिलित / हटाए गए तालिकाओं ( msdn.microsoft.com/en-us/library/ms191300.aspx ) के उपयोग के बारे में निम्नलिखित पेज पर एक लिंक पा सकते हैं
चमत्कार 173
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.