Database trigger
ડેટાબેઝ ટ્રિગર એ પ્રક્રિયાગત કોડ છે જે ચોક્કસ કોષ્ટક પરની ચોક્કસ ઘટનાઓના જવાબમાં અથવા ડેટાબેઝમાં જોવા માટે આપમેળે ચલાવવામાં આવે છે. ટ્રિગરનો ઉપયોગ મોટે ભાગે ડેટાબેઝ પરની માહિતીની અખંડિતતા જાળવવા માટે થાય છે. ઉદાહરણ તરીકે, જ્યારે કર્મચારીઓના ટેબલમાં નવો રેકોર્ડ (નવા કામદારનું પ્રતિનિધિત્વ કરતો) ઉમેરવામાં આવે છે, ત્યારે કરવેરા, રજાઓ અને પગારના ટેબલમાં પણ નવા રેકોર્ડ બનાવવા જોઈએ. ટ્રિગર્સનો ઉપયોગ ઐતિહાસિક માહિતી નોંધવા માટે પણ થઈ શકે છે, ઉદાહરણ તરીકે કર્મચારીઓના અગાઉના પગાર પર નજર રાખવા માટે. ડી. બી. એમ. એસ. માં ટ્રિગર્સ નીચે વર્ણનોની શ્રેણીને અનુસરે છે કે કેવી રીતે કેટલાક લોકપ્રિય ડી. બી. એમ. એસ. સપોર્ટ ટ્રિગર્સ કરે છે. ઓરેકલ જ્યારે માહિતીમાં ફેરફાર કરવામાં આવે છે ત્યારે તે આગ (અને પી. એલ./એસ. ક્યુ. એલ. કોડ ચલાવવા) ને ટ્રિગર કરવા ઉપરાંત, ઓરેકલ 10જી તે આગને સપોર્ટ કરે છે જ્યારે સ્કીમા-લેવલ ઓબ્જેક્ટ્સ (એટલે કે કોષ્ટકો) માં ફેરફાર કરવામાં આવે છે અને જ્યારે વપરાશકર્તા લોગોન અથવા લોગઓફ ઇવેન્ટ્સ થાય છે. ચાર મુખ્ય પ્રકારનાં ટ્રિગર્સ છેઃ પંક્તિ-સ્તર ટ્રિગરઃ આ પંક્તિના કોઈપણ સ્તંભ મૂલ્ય પહેલાં અથવા પછી ચલાવવામાં આવે છે સ્તંભ-સ્તર ટ્રિગર બદલાય છેઃ આ ચોક્કસ સ્તંભ ફેરફારો પહેલાં અથવા પછી ચલાવવામાં આવે છે દરેક પંક્તિ પ્રકાર માટેઃ આ ટ્રિગર દાખલ/અપડેટ/કાઢી નાંખવાથી અસરગ્રસ્ત પરિણામ સમૂહની દરેક પંક્તિ માટે એકવાર ચલાવવામાં આવે છે દરેક નિવેદન પ્રકાર માટેઃ આ ટ્રિગર સમગ્ર પરિણામ સમૂહ માટે માત્ર એક જ વાર ચલાવવામાં આવે છે, પરંતુ દરેક વખતે નિવેદન ચલાવવામાં આવે ત્યારે ફાયર પણ કરે છે. સિસ્ટમ-લેવલ ટ્રિગર્સ ઓરેકલ 8i થી, ડેટાબેઝ ઇવેન્ટ્સ-લોગન્સ, લોગઓફ્સ, સ્ટાર્ટઅપ્સ-ઓરેકલ ટ્રિગર્સને ફાયર કરી શકે છે. માઈક્રોસોફ્ટ એસક્યુએલ સર્વર ડીડીએલ ટ્રિગર્સ માટે માઈક્રોસોફ્ટ એસક્યુએલ સર્વરમાં ઉપલબ્ધ તમામ ફાયરિંગ ઇવેન્ટ્સની સૂચિ માઈક્રોસોફ્ટ ડૉક્સ પર ઉપલબ્ધ છે. ટ્રિગર્સમાં શરતી ક્રિયાઓ કરવી (અથવા ફેરફાર પછી ડેટાનું પરીક્ષણ કરવું) કામચલાઉ શામેલ અને કાઢી નાખેલા કોષ્ટકોને ઍક્સેસ કરીને કરવામાં આવે છે. પોસ્ટગ્રેએસક્યુએલ 1997 માં ટ્રિગર્સ માટે સપોર્ટ રજૂ કર્યો. એસક્યુએલઃ 2003માં નીચેની કાર્યક્ષમતા અગાઉ પોસ્ટગ્રેએસક્યુએલમાં લાગુ કરવામાં આવી ન હતીઃ એસક્યુએલ ટ્રિગર્સને ચોક્કસ કૉલમમાં અપડેટ્સ પર ફાયર કરવાની મંજૂરી આપે છે; પોસ્ટગ્રેએસક્યુએલના વર્ઝન 9 મુજબ આ સુવિધા પોસ્ટગ્રેએસક્યુએલમાં પણ લાગુ કરવામાં આવી છે. ધોરણ પસંદગી, INSERT, UPDATE સિવાયના સંખ્યાબંધ SQL નિવેદનોના અમલને મંજૂરી આપે છે, જેમ કે ટ્રિગર ક્રિયા તરીકે ક્રિએટ ટેબલ. ક્રિએટ ટેબલ પર કૉલ કરવા માટે સંગ્રહિત પ્રક્રિયા અથવા કાર્ય બનાવીને આ કરી શકાય છે. સારાંશઃ CREATE TRIGGER NAME {BEFORE | AFTER} {EVENT [OR.]} ટેબલ પર [દરેક માટે] [ROW | STATEMENT] EXECUTE PROCEEDURE FUNCNAME (દલીલો) ફાયરબર્ડ ફાયરબર્ડ બહુવિધ પંક્તિ-સ્તરને સપોર્ટ કરે છે, પહેલા અથવા પછી, INSERT, UPDATE, DELETE (અથવા તેના કોઈપણ સંયોજન) ટેબલ દીઠ ટ્રિગર્સ, જ્યાં તેઓ હંમેશા ડિફોલ્ટ ટેબલ ફેરફારો ઉપરાંત હોય છે, અને એકબીજા સાથે સંબંધિત ટ્રિગર્સનો ક્રમ સ્પષ્ટ કરી શકાય છે જ્યાં તે અન્યથા અસ્પષ્ટ હશે (પોઝિશન કલમ). વ્યૂઝ પર પણ ટ્રિગર્સ અસ્તિત્વમાં હોઈ શકે છે, જ્યાં તેઓ હંમેશા ટ્રિગર્સને બદલે હોય છે, જે મૂળભૂત અપડેટેબલ વ્યૂ લોજિકને બદલે છે. (આવૃત્તિ 2.1 પહેલાં, અપડેટેબલ માનવામાં આવતા દૃશ્યો પરના ટ્રિગર્સ મૂળભૂત તર્ક ઉપરાંત ચાલશે.) ફાયરબર્ડ મ્યુટેટિંગ ટેબલ અપવાદો (ઓરેકલની જેમ) ઉભી કરતું નથી, અને ટ્રિગર્સ મૂળભૂત રીતે માળામાં અને જરૂરિયાત મુજબ પુનરાવર્તન કરશે (એસક્યુએલ સર્વર મૂળભૂત રીતે માળો બાંધવાની મંજૂરી આપે છે પરંતુ પુનરાવર્તન નહીં.) ફાયરબર્ડના ટ્રિગર્સ નવા અને જૂના સંદર્ભ ચલોનો ઉપયોગ કરે છે (કોષ્ટકો દાખલ અને કાઢી નાંખેલ નથી) અને ટ્રિગરના વર્તમાન ઉપયોગને સૂચવવા માટે અપડેટિંગ, ઇન્સર્ટિંગ અને ડીલીટિંગ ફ્લેગ પ્રદાન કરે છે. {CREATE | RECRIATE | CREATE OR ALTER} ટ્રિગર નામ માટે {કોષ્ટકનું નામ | વ્યૂ નામ] [ACTIVE | INACTIVE] {BEFORE | AFTER} {INSERT [OR UPDATE] [OR DELETE] | UPDATE [OR INSERT] [OR DELETE] | DELETE [OR UPDATE] [OR INSERT]] જો ટ્રાન્સેક્શન કમિટ ટ્રિગરમાં કોઈ અપવાદ ઉઠાવવામાં આવે, તો ટ્રિગર દ્વારા અત્યાર સુધી કરવામાં આવેલા ફેરફારો પાછા ખેંચવામાં આવે છે અને ક્લાયન્ટ એપ્લિકેશનને સૂચિત કરવામાં આવે છે, પરંતુ વ્યવહાર સક્રિય રહે છે જાણે કે ક્યારેય કમિટની વિનંતી કરવામાં આવી ન હોય; ક્લાયન્ટ એપ્લિકેશન ફેરફારો કરવાનું ચાલુ રાખી શકે છે અને કમિટની ફરીથી વિનંતી કરી શકે છે. ડેટાબેઝ ટ્રિગર્સ માટે વાક્યરચનાઃ {CREATE | RECREATE | CREATE or ALTER} ટ્રાઇગર નામ [ACTIVE | INACTIVE] પર {CONNECT | DISCONNNNECT | TRANSACTIN START | TRANSACTIN COMMMIT | TRANSACTIN ROLLBACK} [POSITIN n] જેમ શરૂ થાય છે તેમ. 2005માં શરૂ કરવામાં આવેલા માયએસક્યુએલ/મારિયાડીબી ડીબીએમએસમાં ટ્રિગર્સ માટે માયએસક્યુએલ/મારિયાડીબી લિમિટેડ સપોર્ટ માયએસક્યુએલના 5માં વર્ઝનમાં ઉમેરવામાં આવ્યો હતો. આવૃત્તિ 8 મુજબ, તેઓ ડી. ડી. એલ. (ડેટા ડેફિનેશન લેંગ્વેજ) ટ્રિગર્સ અને ડી. એમ. એલ. (ડેટા મેનિપ્યુલેશન લેંગ્વેજ) ટ્રિગર્સને મંજૂરી આપે છે. તેઓ ટ્રિગર્સને વ્યાખ્યાયિત કરવા માટે કોઈપણ પ્રકારના ડીડીએલ ટ્રિગર (પછી અથવા પહેલાં) નો ઉપયોગ કરવાની પણ મંજૂરી આપે છે. તેઓ CREATE TRIGGER કલમનો ઉપયોગ કરીને બનાવવામાં આવે છે અને DROP TRIGGER કલમનો ઉપયોગ કરીને દૂર કરવામાં આવે છે. ઇવેન્ટ થાય છે તેના પર બોલાવવામાં આવેલા નિવેદનને દરેક ROW માટે કલમ પછી વ્યાખ્યાયિત કરવામાં આવે છે, ત્યારબાદ મુખ્ય શબ્દ (સેટ અથવા પ્રારંભ) આવે છે, જે સૂચવે છે કે જે નીચે આવે છે તે અનુક્રમે અભિવ્યક્તિ છે કે નિવેદન. LUW માટે DB2 તરીકે ઓળખાતી ડિસ્ટ્રિબ્યુટેડ સિસ્ટમ્સ માટે IBM DB2 (LUW એટલે કે લિનક્સ, યુનિક્સ, વિન્ડોઝ) ત્રણ ટ્રિગર પ્રકારોને સપોર્ટ કરે છેઃ ટ્રિગર પહેલાં, ટ્રિગર પછી અને ટ્રિગરને બદલે. નિવેદન સ્તર અને પંક્તિ સ્તરના ટ્રિગર્સ બંને સમર્થિત છે. જો ટેબલ પર સમાન કામગીરી માટે વધુ ટ્રિગર્સ હોય તો પછી ફાયરિંગ ક્રમ ટ્રિગર બનાવટ ડેટા દ્વારા નક્કી કરવામાં આવે છે. આવૃત્તિ 9.7 થી આઇ. બી. એમ. ડી. બી. 2 સ્વાયત્ત વ્યવહારોને ટેકો આપે છે. ટ્રિગર પહેલાં ડેટા તપાસવા અને ઓપરેશનની મંજૂરી હોવી જોઈએ કે નહીં તે નક્કી કરવા માટે છે. જો ટ્રિગર પહેલાંથી અપવાદ ફેંકવામાં આવે તો ઓપરેશન રદ કરવામાં આવે છે અને કોઈ ડેટા બદલવામાં આવતો નથી. DB2 માં ટ્રિગર્સ પહેલાં ફક્ત વાંચી શકાય છે-તમે ટ્રિગર્સ પહેલાં ડેટામાં ફેરફાર કરી શકતા નથી. વિનંતી કરેલ ફેરફાર કરવામાં આવ્યા પછી ટ્રિગર્સ પોસ્ટ પ્રોસેસિંગ માટે ડિઝાઇન કરવામાં આવે છે. ટ્રિગર્સ કોષ્ટકોમાં માહિતી લખી શકે છે અને કેટલાક અન્ય ડેટાબેઝથી વિપરીત તમે કોષ્ટક સહિત કોઈપણ કોષ્ટકમાં લખી શકો છો કે જેના પર ટ્રિગર કાર્ય કરે છે. ટ્રિગર્સને બદલે મંતવ્યોને લખી શકાય તેવા બનાવવા માટે છે. ટ્રિગર્સ સામાન્ય રીતે એસક્યુએલ પીએલ ભાષામાં પ્રોગ્રામ કરવામાં આવે છે. SQLite CREATE [TEMP | TEMPORARY] TRIGGER [જો અસ્તિત્વમાં નથી] [ડેટાબેઝ _ નામ.] ટ્રિગર _ નામ [BEFORE | AFTER | INSTEAD OF] {DELETE | INSERT | UPDATE [OF column _ નામ [, column _ નામ].]} પર {ટેબલ _ નામ | વ્યૂ _ નામ} [દરેક ROW માટે] [ક્યારે શરત ફરજિયાત છે] પ્રારંભ કરો. END SQLite માત્ર પંક્તિ-સ્તરના ટ્રિગર્સને જ સપોર્ટ કરે છે, સ્ટેટમેન્ટ-સ્તરના ટ્રિગર્સને નહીં. અપડેટ કરી શકાય તેવા દૃશ્યો, જે SQLite માં સપોર્ટેડ નથી, તે INSTEAD OF ટ્રિગર્સ સાથે અનુકરણ કરી શકાય છે. XML ડેટાબેઝ બિન-સંબંધાત્મક ડેટાબેઝમાં ટ્રિગર્સના અમલીકરણનું ઉદાહરણ સેડના હોઈ શકે છે, જે XQuery પર આધારિત ટ્રિગર્સ માટે આધાર પૂરો પાડે છે. સેડનામાં ટ્રિગર્સની રચના એસક્યુએલઃ 2003 ટ્રિગર્સ જેવી જ કરવામાં આવી હતી, પરંતુ તે મૂળરૂપે એક્સએમએલ ક્વેરી અને અપડેટ લેંગ્વેજ (એક્સપાથ, એક્સક્વેરી અને એક્સએમએલ અપડેટ લેંગ્વેજ) પર આધારિત હતી. સેડનામાં ટ્રિગર ડેટાબેઝમાં સંગ્રહિત XML દસ્તાવેજના કોઈપણ નોડ્સ પર સેટ કરવામાં આવે છે. જ્યારે આ નોડ્સ અપડેટ થાય છે, ત્યારે ટ્રિગર આપમેળે તેના મુખ્ય ભાગમાં ઉલ્લેખિત XQuery ક્વેરીઝ અને અપડેટ્સને એક્ઝિક્યુટ કરે છે. ઉદાહરણ તરીકે, જો આ વ્યક્તિ દ્વારા સંદર્ભિત કોઈ ખુલ્લી હરાજી હોય તો નીચેનું ટ્રિગર વ્યક્તિ નોડ કાઢી નાખવાનું રદ કરે છેઃ CRIETE TRIGGER "ટ્રિગર 3" DELETE ON DOC ("હરાજી")/સાઇટ// દરેક વ્યક્તિ માટે ટ્રિગર કરો (જો અસ્તિત્વમાં હોય ($WHERE// ઓપન _ હરાજી/બોલી લગાવનાર/પર્સનરેફ/@person = $OLD/@id) પછી () અન્ય $OLD;} પંક્તિ અને નિવેદન સ્તરના ટ્રિગર્સ ટ્રિગર વર્તન કેવી રીતે કાર્ય કરે છે તે સમજવા માટે, તમારે બે મુખ્ય પ્રકારનાં ટ્રિગર્સ વિશે જાગૃત રહેવાની જરૂર છે; આ પંક્તિ અને નિવેદન સ્તરના ટ્રિગર્સ છે. બંને વચ્ચેનો તફાવત એ છે કે ટ્રિગરની અંદરનો કોડ કેટલી વાર ચલાવવામાં આવે છે, અને કયા સમયે. ધારો કે તમારી પાસે એક ટ્રિગર છે જે ચોક્કસ ટેબલ પર અપડેટ પર કૉલ કરવા માટે બનાવવામાં આવે છે. પંક્તિ સ્તરના ટ્રિગર્સ દરેક પંક્તિ માટે એકવાર એક્ઝિક્યુટ કરશે જે અપડેટથી પ્રભાવિત છે. એ ધ્યાનમાં રાખવું અગત્યનું છે કે જો UPDATE આદેશથી કોઈ પંક્તિઓ પ્રભાવિત ન થાય, તો ટ્રિગર ટ્રિગરની અંદર કોઈ કોડને એક્ઝિક્યુટ કરશે નહીં. અપડેટ દ્વારા કેટલી પંક્તિઓ પ્રભાવિત થાય છે તે ધ્યાનમાં લીધા વિના નિવેદન સ્તરના ટ્રિગર્સને એકવાર બોલાવવામાં આવશે. અહીં એ નોંધવું અગત્યનું છે કે જો UPDATE આદેશ કોઈ પણ પંક્તિઓને અસર કરતો ન હોય, તો પણ ટ્રિગરની અંદરનો કોડ એકવાર ચલાવવામાં આવશે. BEFORE અને AFTER વિકલ્પોનો ઉપયોગ કરીને ટ્રિગર ક્યારે બોલાવવામાં આવે છે તે નક્કી કરો. ધારો કે તમારી પાસે એક ટ્રિગર છે જે ચોક્કસ ટેબલ પર INSERT પર બોલાવવામાં આવે છે. જો તમારું ટ્રિગર BEFORE વિકલ્પનો ઉપયોગ કરી રહ્યું હોય, તો ટ્રિગરની અંદરનો કોડ ટેબલમાં INSERT આવે તે પહેલાં ચલાવવામાં આવશે. BEFORE ટ્રિગરનો સામાન્ય ઉપયોગ INSERT ના ઇનપુટ મૂલ્યોની ચકાસણી કરવાનો અથવા તે મુજબ મૂલ્યોમાં ફેરફાર કરવાનો છે. હવે ધારો કે આપણી પાસે એક ટ્રિગર છે જે તેના બદલે એ. એફ. ટી. આર. નો ઉપયોગ કરે છે. ટેબલ પર INSERT થયા પછી ટ્રિગરની અંદરનો કોડ ચલાવવામાં આવે છે. આ ટ્રિગરનો એક ઉદાહરણ ઉપયોગ કરવામાં આવેલા ફેરફારો પર નજર રાખીને, ડેટાબેઝમાં કોણે દાખલ કર્યા છે તેનો ઓડિટ ઇતિહાસ બનાવવાનો છે. આ વિકલ્પોનો ઉપયોગ કરતી વખતે તમારે કેટલીક બાબતોને ધ્યાનમાં રાખવાની જરૂર છે. BEFORE વિકલ્પ તમને કોષ્ટકોમાં ફેરફાર કરવાની મંજૂરી આપતો નથી, તેથી જ ઇનપુટ માન્યતા એ વ્યવહારુ ઉપયોગ છે. એ. એફ. ટી. આર. ટ્રિગર્સનો ઉપયોગ તમને ઓડિટ ઇતિહાસ કોષ્ટકમાં દાખલ કરવા જેવા કોષ્ટકોમાં ફેરફાર કરવાની મંજૂરી આપે છે. તે નિવેદન અથવા પંક્તિ સ્તર છે કે નહીં તે નક્કી કરવા માટે ટ્રિગર બનાવતી વખતે ફક્ત પંક્તિ સ્તર માટે દરેક ROW કલમનો સમાવેશ કરો, અથવા નિવેદન સ્તર માટે કલમને અવગણો. તમારા ટ્રિગરમાં વધારાના INSERT/UPDATE/DELETE આદેશોનો ઉપયોગ કરવામાં સાવચેત રહો, કારણ કે ટ્રિગર પુનરાવર્તન શક્ય છે, જે અનિચ્છનીય વર્તનનું કારણ બને છે. નીચે આપેલા ઉદાહરણોમાં દરેક ટ્રિગર એક અલગ કોષ્ટકમાં ફેરફાર કરી રહ્યું છે, તેમાં શું ફેરફાર કરવામાં આવી રહ્યો છે તે જોઈને તમે વિવિધ ટ્રિગર પ્રકારોનો ઉપયોગ કરવામાં આવે ત્યારે કેટલીક સામાન્ય એપ્લિકેશનો જોઈ શકો છો. નીચેની પંક્તિ સ્તરના ટ્રિગરનું ઓરેકલ વાક્યરચનાનું ઉદાહરણ છે જેને અસરગ્રસ્ત દરેક ROW માટે અપડેટ પછી કહેવામાં આવે છે. આ ટ્રિગરને ફોન બુક ડેટાબેઝના અપડેટ પર બોલાવવામાં આવે છે. જ્યારે ટ્રિગરને બોલાવવામાં આવે છે ત્યારે તે ફોન _ બુક _ ઓડિટ નામના અલગ ટેબલમાં એન્ટ્રી ઉમેરે છે. સિક્વન્સ જેવા સ્કીમા ઓબ્જેક્ટ્સનો લાભ લેવા માટે સક્ષમ ટ્રિગર્સની પણ નોંધ લો, આ ઉદાહરણમાં audit_id_sequence.nexVal નો ઉપયોગ ફોન _ બુક _ ઓડિટ ટેબલમાં અનન્ય પ્રાથમિક કીઓ બનાવવા માટે થાય છે. CRIET OR REPACE TRIGGER TRIGGER TRIGGER TRIGGER TRIGGER TRIGGER TRIGGER TRIGGER TRIGGER TRIGGER TRIGGER TRIGGER TRIGGGER TRIGGER TRIGGGER TRIGGER TRIGGER TRIGGER TRIGER TRIGER TRIGER TRIGER TRIGER TRIGER TRIGER TRIGER TRIGER TRIGER TRIGER TRIGER TRIGER TRIGGER TRIGGER TRIGGER TRIGGER TRIGGER TRIGGER TRIGGER TRIGGER TRIGGER TRIG ફોન બુક સેટ ફોન નંબર = '111-111-1111' જ્યાં છેલ્લું નામ = 'જોન્સ'; નોંધ લો કે ફોન નંબર ઓડિટ ટેબલ હવે બે એન્ટ્રીઓ સાથે ભરેલું છે. આ ડેટાબેઝમાં 'જોન્સ' ના છેલ્લા નામ સાથે બે એન્ટ્રીઓ હોવાના કારણે છે. સુધારાએ બે અલગ પંક્તિ મૂલ્યોમાં ફેરફાર કર્યો હોવાથી, બનાવેલ ટ્રિગરને બે વાર બોલાવવામાં આવ્યું હતું; દરેક ફેરફાર પછી એક વાર. - સ્ટેટમેન્ટ-લેવલ ટ્રિગર પછી ઓરેકલ વાક્યરચના સ્ટેટમેન્ટ ટ્રિગર જે ફોન _ બુક ટેબલ પર અપડેટ પછી બોલાવવામાં આવે છે. જ્યારે ટ્રિગર બોલાવવામાં આવે છે ત્યારે તે ફોન _ બુક _ એડિટ _ હિસ્ટ્રી કોષ્ટકમાં બનાવો અથવા બદલો TRIGER ફોન _ બુક _ હિસ્ટ્રી ફોન _ બુક _ બુક _ હિસ્ટ્રી પર અપડેટ કર્યા પછી દાખલ કરે છે (ઓડિટ _ હિસ્ટ્રી _ આઈડી, વપરાશકર્તાનામ, ફેરફાર, સંપાદિત કરો _ તારીખ) મૂલ્યો (audit_history_id_sequence.nextVal, USER, 'અપડેટ', SYSSDATE); અંત; હવે ઉપરના ઉદાહરણની જેમ બરાબર તે જ અપડેટ કરી રહ્યા છીએ, જો કે આ વખતે સ્ટેટમેન્ટ લેવલ ટ્રિગર સાથે. અપડેટ ફોન બુક સેટ ફોન નંબર = '111-111-1111' WHERE છેલ્લું નામ = 'જોન્સ'; પરિણામ દર્શાવે છે કે ટ્રિગરને માત્ર એક જ વાર બોલાવવામાં આવ્યું હતું, ભલે સુધારાએ બે પંક્તિઓ બદલી હોય. દરેક-પંક્તિ-સ્તરના ટ્રિગર પહેલાં આ ઉદાહરણ દરેક ROW ટ્રિગર પહેલાં દર્શાવે છે જે WHEN શરતી ઉપયોગ કરીને INSERT ને સુધારે છે. જો છેલ્લું નામ 10 અક્ષરો કરતાં મોટું હોય, તો એસ. યુ. બી. એસ. ટી. આર. કાર્યનો ઉપયોગ કરીને આપણે છેલ્લું નામ સ્તંભ મૂલ્યને સંક્ષિપ્તમાં બદલીએ છીએ. (LENGTH (new.last_name)> 10) ક્યારે શરૂ થાય છેઃ new.last_name: = સબ્સ્ટર (: new.last_name, 0,1); અંત; હવે મોટા નામની વ્યક્તિની ઇન્સર્ટ કરી રહ્યા છીએ. INSERT INTO ફોન _ બુક વેલ્યુઝ (6, 'વેરીવેરીલોંગલાસ્ટનેમ', 'એરિન', 'મિનિયાપોલિસ', 'એમએન', '989 યુનિવર્સિટી ડ્રાઇવ', '123-222-4456', 55408, TO _ DATE ('11/21/1991', 'એમએમ/ડીડી/વાયવાયવાયવાય')); ટ્રિગર ઉપરના પરિણામ મુજબ કામ કરે છે, જે INSERTના મૂલ્યને અમલમાં મૂકતા પહેલા તેમાં ફેરફાર કરે છે. ડેટાબેઝ પ્રતિબંધોને લાગુ કરતી વખતે બીફોર સ્ટેટમેન્ટ ટ્રિગરનો ઉપયોગ કરીને-સ્ટેટમેન્ટ-લેવલ ટ્રિગર ખાસ કરીને ઉપયોગી છે. આ ઉદાહરણ દર્શાવે છે કે ટેબલ ફોન બુક પર "SOMEUSER" નામની વ્યક્તિ પર પ્રતિબંધ કેવી રીતે લાગુ કરવો. CREATE OR REPACE TRIGGGER Hauschbc INSERT ON કરતા પહેલા SOMEUSER.phone_book BEGIN REISE _ APLICATION _ ERROR (num =>-20050, msg => 'ભૂલ સંદેશ અહીં જાય છે. '); સમાપ્ત; હવે, જ્યારે કોઈપણ INSERT નો પ્રયાસ કર્યા પછી "SOMEUSER" લૉગ ઇન થાય છે ત્યારે આ ભૂલ સંદેશ બતાવશેઃ SQL ભૂલઃ ORA-20050: ભૂલ સંદેશ અહીં જાય છે. આના જેવી વૈવિધ્યપૂર્ણ ભૂલો નંબર ચલને કઈ રીતે વ્યાખ્યાયિત કરી શકાય તેના પર પ્રતિબંધ ધરાવે છે. અસંખ્ય અન્ય પૂર્વ-નિર્ધારિત ભૂલોને કારણે આ ચલ-2000 થી-209 ની શ્રેણીમાં હોવો જોઈએ. સંદર્ભો બાહ્ય કડીઓ માઈક્રોસોફ્ટ એસક્યુએલ સર્વર ડ્રોપ ટ્રિગર માયએસક્યુએલ ડેટાબેઝ ટ્રિગર્સ માયએસક્યુએલ ડીબી ક્રિએટ ટ્રિગર્સ ડીબી2 ક્રિએટ ટ્રિગર સ્ટેટમેન્ટ ઓરેકલ ક્રિએટ ટ્રિગર પોસ્ટગ્રેએસક્યુએલ ક્રિએટ ટ્રિગર ઓરેકલ મ્યુટેટિંગ ટેબલ પ્રોબ્લેમ્સ વિથ ડીલીટ કેસ્કેડ એસક્યુએલાઇટ ક્વેરી લેંગ્વેજઃ ક્રિએટ ટ્રિગર ઓરેકલનું દસ્તાવેજીકરણ ટ્રિગર્સ ડેટાબેઝ મેનેજમેન્ટ સિસ્ટમ્સ (કમ્પ્યુટિંગ) ઇવેન્ટ્સ પરના લેખો ઉદાહરણ તરીકે એસક્યુએલ કોડ