आप को ट्रिगर कार्रवाई चाहते हो सकता है Oracle में उदाहरण के लिए ट्रिगर के 4 विभिन्न प्रकार के निम्न क्रम में सक्रिय हो जाएगा ग्राहक द्वारा एक बयान निष्पादित करने के बाद एक बार निष्पादित करें जो दस लाख पंक्तियों (कथन-स्तरीय ट्रिगर) को संशोधित करता है। या, आप संशोधित (पंक्ति-स्तर ट्रिगर) की प्रत्येक पंक्ति के लिए एक बार कार्रवाई को ट्रिगर करना चाह सकते हैं।
उदाहरण: मान लीजिए कि आपके पास एक ट्रिगर है जो सुनिश्चित करेगा कि सभी हाई स्कूल सीनियर स्नातक हों। यही है, जब एक वरिष्ठ ग्रेड 12 होता है, और हम इसे 13 तक बढ़ाते हैं, तो हम ग्रेड को NULL
पर सेट करना चाहते हैं।
एक कथन स्तर ट्रिगर के लिए, आप कहेंगे, ग्रेड-ग्रेड स्टेटमेंट रन के बाद, ग्रेड 13 से NULL
के साथ किसी भी पंक्ति को अपडेट करने के लिए पूरी तालिका को एक बार जांचें।
एक पंक्ति-स्तर ट्रिगर के लिए, आप कहेंगे, प्रत्येक पंक्ति है कि अद्यतन किया जाता है के बाद, NULL
को नई पंक्ति के ग्रेड को अद्यतन करता है, तो यह 13
एक बयान स्तरीय ट्रिगर इस प्रकार दिखाई देगा है:
create trigger stmt_level_trigger
after update on Highschooler
begin
update Highschooler
set grade = NULL
where grade = 13;
end;
और एक पंक्ति-स्तर ट्रिगर इस प्रकार दिखाई देगा:
create trigger row_level_trigger
after update on Highschooler
for each row
when New.grade = 13
begin
update Highschooler
set grade = NULL
where New.ID = Highschooler.ID;
end;
ध्यान दें कि SQLite बयान स्तरीय चलाता समर्थन नहीं करता, SQLite में ऐसा है, FOR EACH ROW
वैकल्पिक है।
स्रोत
2012-08-07 22:57:33
तो, एक कथन स्तर ट्रिगर एक पंक्ति को संशोधित करने में सक्षम होगा, जबकि पंक्ति-स्तर तालिका में प्रत्येक पंक्ति को संशोधित करने में सक्षम होगा? –
नहीं, एक पंक्ति-स्तरीय ट्रिगर का उपयोग कई पंक्तियों को अद्यतन/हटाने/डालने के लिए भी किया जा सकता है। या अन्य तालिकाओं में पंक्तियां। –
और एक कथन-स्तरीय ट्रिगर भी। –