Database trigger
একটি ডাটাবেস ট্রিগার হল পদ্ধতিগত কোড যা একটি নির্দিষ্ট টেবিলের নির্দিষ্ট ঘটনা বা ডাটাবেসের দৃশ্যের প্রতিক্রিয়ায় স্বয়ংক্রিয়ভাবে কার্যকর হয়। ট্রিগারটি বেশিরভাগ ডেটাবেসে তথ্যের অখণ্ডতা বজায় রাখার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, যখন একটি নতুন রেকর্ড (একজন নতুন শ্রমিকের প্রতিনিধিত্বকারী) কর্মচারীদের টেবিলে যুক্ত করা হয়, তখন কর, ছুটি এবং বেতনের টেবিলেও নতুন রেকর্ড তৈরি করা উচিত। ট্রিগারগুলি ঐতিহাসিক তথ্য লগ করতেও ব্যবহার করা যেতে পারে, উদাহরণস্বরূপ কর্মচারীদের পূর্ববর্তী বেতনের উপর নজর রাখতে। ডিবিএমএস-এর ট্রিগারগুলি নীচে কিছু জনপ্রিয় ডিবিএমএস সমর্থন কীভাবে ট্রিগার করে তার একটি ধারাবাহিক বিবরণ অনুসরণ করে। ওরাকল ডেটা সংশোধন করার সময় সেই আগুনকে (এবং পিএল/এসকিউএল কোড কার্যকর করার) ট্রিগার করার পাশাপাশি, ওরাকল 10জি সেই আগুনকে সমর্থন করে যখন স্কিমা-স্তরের বস্তুগুলি (অর্থাৎ, টেবিল) সংশোধন করা হয় এবং যখন ব্যবহারকারী লগইন বা লগঅফ ইভেন্ট ঘটে। স্কিমা-স্তরের ট্রিগার সৃষ্টির পরে পরিবর্তনের আগে পরিবর্তনের পরে নামার পরে নামার আগে ড্রপ করার আগে চারটি প্রধান ধরনের ট্রিগার হলঃ সারি-স্তরের ট্রিগারঃ এটি একটি সারির যে কোনও কলামের মান পরিবর্তনের আগে বা পরে কার্যকর হয় কলাম-স্তরের ট্রিগারঃ এটি নির্দিষ্ট কলাম পরিবর্তনের আগে বা পরে কার্যকর হয় প্রতিটি সারির প্রকারের জন্যঃ এই ট্রিগারটি একটি সন্নিবেশ/আপডেট/মুছে ফেলার দ্বারা প্রভাবিত ফলাফল সেটের প্রতিটি সারির জন্য একবার কার্যকর করা হয় প্রতিটি বিবৃতির প্রকারের জন্যঃ এই ট্রিগারটি পুরো ফলাফল সেটের জন্য কেবল একবার কার্যকর করা হয়, তবে প্রতিবার বিবৃতিটি কার্যকর করার সময় ফায়ারও করে। সিস্টেম-স্তরের ট্রিগারগুলি ওরাকল 8আই থেকে, ডাটাবেস ইভেন্টগুলি-লগোন, লগঅফ, স্টার্টআপগুলি-ওরাকল ট্রিগারগুলিকে চালিত করতে পারে। মাইক্রোসফ্ট এসকিউএল সার্ভার ডিডিএল ট্রিগারগুলির জন্য মাইক্রোসফ্ট এসকিউএল সার্ভারে উপলব্ধ সমস্ত ফায়ারিং ইভেন্টের একটি তালিকা মাইক্রোসফ্ট ডক্সে উপলব্ধ। অস্থায়ী সন্নিবেশিত এবং মুছে ফেলা টেবিলগুলিতে প্রবেশের মাধ্যমে ট্রিগারগুলিতে (বা পরিবর্তনের পরে ডেটা পরীক্ষা করা) শর্তাধীন ক্রিয়া সম্পাদন করা হয়। পোস্টগ্রেএসকিউএল 1997 সালে ট্রিগারগুলির জন্য সমর্থন চালু করে। এসকিউএলঃ 2003-এ নিম্নলিখিত কার্যকারিতাটি পূর্বে পোস্টগ্রেএসকিউএল-এ প্রয়োগ করা হয়নিঃ এসকিউএল নির্দিষ্ট কলামে আপডেটগুলিতে ফায়ার করার জন্য ট্রিগারগুলিকে অনুমতি দেয়; পোস্টগ্রেএসকিউএল-এর সংস্করণ 9 হিসাবে এই বৈশিষ্ট্যটি পোস্টগ্রেএসকিউএল-এও প্রয়োগ করা হয়েছে। মানটি নির্বাচন, ইনসার্ট, আপডেট ব্যতীত বেশ কয়েকটি এসকিউএল বিবৃতি কার্যকর করার অনুমতি দেয়, যেমন ট্রিগার ক্রিয়া হিসাবে ক্রিয়েট টেবিল। এটি ক্রিয়েট টেবিল কল করার জন্য একটি সংরক্ষিত পদ্ধতি বা ফাংশন তৈরি করার মাধ্যমে করা যেতে পারে। সারসংক্ষেপঃ ট্রাইগারের নাম তৈরি করুন {BEFORE। AFTER} {ইভেন্ট [OR.]] টেবিলে [প্রত্যেকের জন্য] [ROW। STATEMENT] এক্সিকিউট প্রসেস ফানকনাম (আর্গুমেন্ট) ফায়ারবার্ড প্রতি টেবিলে একাধিক সারি-স্তর সমর্থন করে, আগে বা পরে, 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] [OR INSERT] যদি ট্রানস্যাকশন কমিট ট্রিগারে কোনও ব্যতিক্রম উত্থাপিত হয়, তবে ট্রিগার দ্বারা এখন পর্যন্ত করা পরিবর্তনগুলি প্রত্যাহার করা হয় এবং ক্লায়েন্ট অ্যাপ্লিকেশনটিকে অবহিত করা হয়, তবে লেনদেনটি সক্রিয় থাকে যেন কমিট কখনও অনুরোধ করা হয়নি; ক্লায়েন্ট অ্যাপ্লিকেশন পরিবর্তন করা এবং পুনরায় অনুরোধ করা চালিয়ে যেতে পারে। ডাটাবেজ ট্রিগারগুলির জন্য সিনট্যাক্সঃ {CREATE। RECREATE। CREATE or ALTER} ট্রাইগারের নাম [ACTIVE। INACTIVE] অন {CONNNECT। DISCONNNNECT। TRANSACTIN START। TRANSACTIN COMMMIT। TRANSACTIN ROLLBACK} [POSITIN n] শুরু হিসাবে। মাইএসকিউএল/মারিয়াডিবি ডিবিএমএস-এ ট্রিগারগুলির জন্য মাইএসকিউএল/মারিয়াডিবি লিমিটেড সমর্থন 2005 সালে চালু করা মাইএসকিউএল-এর 5 সংস্করণে যোগ করা হয়েছিল। সংস্করণ 8 পর্যন্ত, তারা ডি. ডি. এল (ডেটা ডেফিনিশন ল্যাঙ্গুয়েজ) ট্রিগার এবং ডি. এম. এল (ডেটা ম্যানিপুলেশন ল্যাঙ্গুয়েজ) ট্রিগারের অনুমতি দেয়। এগুলি ট্রিগারগুলি সংজ্ঞায়িত করতে যে কোনও ধরনের ডিডিএল ট্রিগার (পরে বা আগে) ব্যবহার করার অনুমতি দেয়। এগুলি CREATE TRIGGER ধারা ব্যবহার করে তৈরি করা হয় এবং DROP TRIGGER ধারা ব্যবহার করে মুছে ফেলা হয়। একটি ঘটনা ঘটার উপর আহ্বান করা বিবৃতিটি প্রতিটি রাস্তার জন্য ধারার পরে সংজ্ঞায়িত করা হয়, তারপরে একটি কীওয়ার্ড (সেট বা বিইজিআইএন) থাকে, যা নির্দেশ করে যে নিম্নলিখিতটি যথাক্রমে একটি অভিব্যক্তি বা বিবৃতি কিনা। LUW-এর জন্য DB2 নামে পরিচিত ডিস্ট্রিবিউটেড সিস্টেমের জন্য IBM DB2 (LUW মানে লিনাক্স, ইউনিক্স, উইন্ডোজ) তিনটি ট্রিগার প্রকারকে সমর্থন করেঃ ট্রিগারের আগে, ট্রিগারের পরে এবং ট্রিগারের পরিবর্তে। বিবৃতি স্তর এবং সারি স্তরের ট্রিগার উভয়ই সমর্থিত। যদি টেবিলে একই ক্রিয়াকলাপের জন্য আরও ট্রিগার থাকে তবে ট্রিগার তৈরির তথ্য দ্বারা ফায়ারিং অর্ডার নির্ধারণ করা হয়। সংস্করণ 9.7 থেকে আইবিএম ডিবি2 স্বায়ত্তশাসিত লেনদেন সমর্থন করে। ট্রিগারের আগে ডেটা পরীক্ষা করা এবং ক্রিয়াকলাপের অনুমতি দেওয়া উচিত কিনা তা নির্ধারণ করা। যদি ট্রিগারের আগে থেকে ব্যতিক্রম নিক্ষেপ করা হয় তবে অপারেশন বাতিল করা হয় এবং কোনও তথ্য পরিবর্তন করা হয় না। ডিবি2-এ শুধুমাত্র ট্রিগারগুলি পড়ার আগে-আপনি ট্রিগারগুলির আগে ডেটা পরিবর্তন করতে পারবেন না। অনুরোধকৃত পরিবর্তন সম্পাদন করার পরে ট্রিগারগুলি পোস্ট প্রসেসিংয়ের জন্য ডিজাইন করা হয়। ট্রিগারগুলি টেবিলে ডেটা লিখতে পারে এবং অন্যান্য ডেটাবেসের বিপরীতে আপনি টেবিল সহ যে কোনও টেবিলে লিখতে পারেন যার উপর ট্রিগার কাজ করে। ট্রিগারের পরিবর্তে মতামতকে লেখার উপযোগী করে তোলা হয়। ট্রিগারগুলি সাধারণত এসকিউএল পিএল ভাষায় প্রোগ্রাম করা হয়। SQLite CREATE [TEMP। TEMPORARY] TRIGGER [যদি অস্তিত্ব না থাকে] [ডাটাবেস _ নাম।] ট্রিগার _ নাম [BEFORE। AFTER। INSTEAD OF] {DELETE। INSERT। UPDATE [OF column _ নাম [, column _ নাম].]} অন {টেবিল _ নাম। ভিউ _ নাম} [প্রতিটি রাস্তার জন্য] [যখন শর্ত বাধ্যতামূলক] শুরু করুন। শেষ এসকিউএলাইট শুধুমাত্র সারি-স্তরের ট্রিগারগুলিকে সমর্থন করে, বিবৃতি-স্তরের ট্রিগারগুলিকে নয়। আপডেটযোগ্য ভিউ, যা এসকিউএলাইট-এ সমর্থিত নয়, ইনস্টেড অফ ট্রিগার দিয়ে অনুকরণ করা যেতে পারে। এক্স. এম. এল ডাটাবেস অ-সম্পর্কিত ডাটাবেসে ট্রিগার বাস্তবায়নের একটি উদাহরণ হতে পারে সেদনা, যা এক্সকুয়েরির উপর ভিত্তি করে ট্রিগারগুলির জন্য সমর্থন প্রদান করে। সেডনার ট্রিগারগুলি এসকিউএলঃ 2003 ট্রিগারগুলির অনুরূপ হওয়ার জন্য ডিজাইন করা হয়েছিল, তবে স্থানীয়ভাবে এক্সএমএল অনুসন্ধান এবং আপডেট ভাষাগুলির (এক্সপ্যাথ, এক্সকুয়েরি এবং এক্সএমএল আপডেট ভাষা) উপর ভিত্তি করে। সেডনায় একটি ট্রিগার ডাটাবেসে সংরক্ষিত একটি এক্সএমএল নথির যে কোনও নোডে সেট করা থাকে। যখন এই নোডগুলি আপডেট করা হয়, তখন ট্রিগারটি স্বয়ংক্রিয়ভাবে তার শরীরে নির্দিষ্ট এক্সকুয়েরি প্রশ্ন এবং আপডেটগুলি কার্যকর করে। উদাহরণস্বরূপ, নিম্নলিখিত ট্রিগারটি এই ব্যক্তির দ্বারা উল্লিখিত কোনও খোলা নিলাম থাকলে পার্সন নোড মুছে ফেলা বাতিল করেঃ প্রতিটি কাজের জন্য নথি ("নিলাম")/সাইট// ব্যক্তি মুছে ফেলার আগে ট্রিগার "ট্রিগার 3" তৈরি করুন {যদি (বিদ্যমান থাকে ($WHERE// অপেন _ নিলাম/দরদাতা/পার্সনরিফ/@person = $ওল্ড/@id) তারপর () অন্য $ওল্ড;} সারি এবং বিবৃতি স্তরের ট্রিগার ট্রিগার আচরণ কীভাবে কাজ করে তা বোঝার জন্য আপনাকে দুটি প্রধান ধরণের ট্রিগার সম্পর্কে সচেতন থাকতে হবে; এগুলি হল সারি এবং বিবৃতি স্তরের ট্রিগার। দুটির মধ্যে পার্থক্য হল ট্রিগারের মধ্যে কোডটি কতবার এবং কোন সময়ে কার্যকর করা হয়। ধরুন আপনার কাছে একটি ট্রিগার রয়েছে যা একটি নির্দিষ্ট টেবিলে আপডেটে কল করার জন্য তৈরি করা হয়েছে। সারি স্তরের ট্রিগারগুলি আপডেট দ্বারা প্রভাবিত প্রতিটি সারির জন্য একবার করে কার্যকর করবে। মনে রাখা গুরুত্বপূর্ণ যে যদি কোনও সারি আপডেট কমান্ড দ্বারা প্রভাবিত না হয়, ট্রিগারটি ট্রিগারের মধ্যে কোনও কোড কার্যকর করবে না। আপডেট দ্বারা কতগুলি সারি প্রভাবিত হয় তা নির্বিশেষে বিবৃতি স্তরের ট্রিগারগুলি একবার কল করা হবে। এখানে এটি লক্ষ করা গুরুত্বপূর্ণ যে আপডেট কমান্ডটি কোনও সারি প্রভাবিত না করলেও, ট্রিগারের মধ্যে থাকা কোডটি একবার কার্যকর করা হবে। BEFORE এবং AFTER বিকল্পগুলি ব্যবহার করে ট্রিগারটি কখন কল করা হয় তা নির্ধারণ করা হয়। ধরুন আপনার একটি ট্রিগার রয়েছে যা একটি নির্দিষ্ট টেবিলে ইনসার্টে ডাকা হয়। যদি আপনার ট্রিগারটি বিফোর বিকল্পটি ব্যবহার করে, তবে ট্রিগারের মধ্যে থাকা কোডটি টেবিলে আইএনএসইআরটি হওয়ার আগে কার্যকর করা হবে। BEFORE ট্রিগারের একটি সাধারণ ব্যবহার হল INSERT-এর ইনপুট মানগুলি যাচাই করা, অথবা সেই অনুযায়ী মানগুলি সংশোধন করা। এখন ধরা যাক আমাদের কাছে একটি ট্রিগার রয়েছে যা পরিবর্তে আফটার ব্যবহার করে। টেবিলে আইএনএসইআরটি হওয়ার পরে ট্রিগারের মধ্যে কোডটি কার্যকর করা হয়। এই ট্রিগারের একটি উদাহরণ হল কে ডাটাবেসে সন্নিবেশ করেছে তার একটি নিরীক্ষা ইতিহাস তৈরি করা, পরিবর্তনের উপর নজর রাখা। এই বিকল্পগুলি ব্যবহার করার সময় আপনাকে কয়েকটি বিষয় মনে রাখতে হবে। বিইএফওআর বিকল্পটি আপনাকে টেবিলগুলি সংশোধন করার অনুমতি দেয় না, তাই ইনপুট বৈধতা একটি ব্যবহারিক ব্যবহার। এ. এফ. টি. আর ট্রিগার ব্যবহার করলে আপনি একটি অডিট ইতিহাস টেবিলে অন্তর্ভুক্ত করার মতো টেবিলগুলি সংশোধন করতে পারবেন। এটি বিবৃতি বা সারি স্তর কিনা তা নির্ধারণের জন্য একটি ট্রিগার তৈরি করার সময় কেবল একটি সারি স্তরের জন্য প্রতিটি ROW ধারার জন্য অন্তর্ভুক্ত করুন, অথবা একটি বিবৃতি স্তরের জন্য ধারাটি বাদ দিন। আপনার ট্রিগারের মধ্যে অতিরিক্ত INSERT/UPDATE/DELETE কমান্ড ব্যবহার করার বিষয়ে সতর্ক থাকুন, কারণ ট্রিগার পুনরাবৃত্তি সম্ভব, যা অবাঞ্ছিত আচরণের কারণ হতে পারে। নীচের উদাহরণগুলিতে প্রতিটি ট্রিগার একটি ভিন্ন টেবিল পরিবর্তন করছে, কী পরিবর্তন করা হচ্ছে তা দেখে আপনি বিভিন্ন ট্রিগার প্রকার ব্যবহার করার কিছু সাধারণ প্রয়োগ দেখতে পাবেন। নিম্নলিখিতটি একটি সারি স্তরের ট্রিগারের একটি ওরাকল সিনট্যাক্স উদাহরণ যা প্রতিটি রো আক্রান্তদের জন্য একটি আপডেটের পরে বলা হয়। এই ট্রিগারটি একটি ফোন বুক ডাটাবেসের আপডেটে ডাকা হয়। যখন ট্রিগারটি ডাকা হয় তখন এটি ফোন _ বুক _ অডিট নামে একটি পৃথক টেবিলে একটি এন্ট্রি যোগ করে। ক্রমের মতো স্কিমা অবজেক্টগুলির সুবিধা নিতে সক্ষম ট্রিগারগুলির কথাও মনে রাখবেন, এই উদাহরণে audit_id_sequence.nexVal ফোন _ বুক _ অডিট টেবিলে অনন্য প্রাথমিক কী তৈরি করতে ব্যবহৃত হয়। ফোন _ বুক _ অডিট তৈরি করুন বা প্রতিলিপি করুন প্রতিটি লাইনে আপডেট করার পরে ফোন _ বুক শুরু করুন ফোন _ বুক _ অডিট (অডিট _ আইডি, অডিট _ চেঞ্জ, অডিট _ এল _ নেম, অডিট _ এফ _ নেম, অডিট _ ওল্ড _ ফোন _ নম্বর, অডিট _ নিউ _ ফোন _ নম্বর, অডিট _ ডেট) ভ্যালু (audit_id_sequence.nextVal, 'আপডেট',: OLD.last_name,: OLD.first_name,: OLD.phone_number,: NEW.phone_number, সিএসডিএটি); শেষ; এখন 'জোন্স' নামের শেষ নামধারীদের জন্য ফোন _ বুক টেবিলে একটি আপডেট কল করুন। ফোন _ বুক সেট ফোন _ নম্বর আপডেট করুন = '111-111-1111' কোথায় শেষ নাম = 'জোন্স'; লক্ষ্য করুন যে ফোন _ নম্বর _ অডিট টেবিলে এখন দুটি এন্ট্রি রয়েছে। এর কারণ হল ডাটাবেসে 'জোন্স'-এর শেষ নাম সহ দুটি এন্ট্রি রয়েছে। যেহেতু আপডেটটি দুটি পৃথক সারির মান পরিবর্তন করেছে, তাই তৈরি ট্রিগারটি দুইবার কল করা হয়েছিল; প্রতিটি পরিবর্তনের পরে একবার। আফটার-স্টেটমেন্ট-লেভেল ট্রিগার একটি ওরাকল সিনট্যাক্স স্টেটমেন্ট ট্রিগার যা ফোন _ বুক টেবিলে একটি আপডেটের পরে বলা হয়। যখন ট্রিগারটি কল করা হয় তখন এটি ফোন _ বুক _ এডিট _ হিস্ট্রি টেবিলে তৈরি বা প্রতিস্থাপন করে ফোন _ বুক _ হিস্ট্রি ফোন _ বুক _ বুক _ হিস্ট্রি আপডেট করার পরে ফোন _ বুক শুরু করুন ফোন _ বুক _ এডিট _ হিস্ট্রি (নিরীক্ষা _ ইতিহাস _ আইডি, ব্যবহারকারীর নাম, পরিবর্তন, সম্পাদনা _ তারিখ) মান (audit_history_id_sequence.nextVal, ব্যবহারকারী, 'আপডেট', সিস্টেম); শেষ; এখন উপরের উদাহরণের মতো ঠিক একই আপডেট করছে, তবে এবার একটি বিবৃতি স্তরের ট্রিগার দিয়ে। আপডেট ফোন _ বুক সেট ফোন _ নম্বর = '111-111-1111' কোথায় শেষ নাম = 'জোন্স'; ফলাফল দেখায় যে ট্রিগারটি শুধুমাত্র একবার কল করা হয়েছিল, যদিও আপডেটটি দুটি সারি পরিবর্তন করেছিল। প্রতিটি-সারি-স্তরের ট্রিগারের আগে এই উদাহরণটি প্রতিটি রো-এর আগে একটি ট্রিগার প্রদর্শন করে যা WHEN শর্তাধীন ব্যবহার করে INSERT-কে পরিবর্তন করে। যদি শেষ নামটি 10 অক্ষরের চেয়ে বড় হয়, তাহলে এস. ইউ. বি. এস. টি. আর ফাংশন ব্যবহার করে আমরা শেষ নাম কলামের মানকে সংক্ষেপে পরিবর্তন করি। প্রতিটি লাইনের জন্য ফোন _ বুক চালু করার আগে ফোন _ বুক _ ইন্সার্ট তৈরি করুন (LENGTH (new.last_name)> 10) শুরু করুনঃ new.last_name: = সাবস্টার (: new.last_name, 0,1); শেষ করুন; এখন বড় নামের কারো একটি ইনসার্ট সম্পাদন করছেন। INSERT INTO ফোন _ বুক ভ্যালুস (6, 'ভেরিভেরি লংলাস্টনাম', 'এরিন', 'মিনিয়াপোলিস', 'এমএন', '989 ইউনিভার্সিটি ড্রাইভ', '123-222-4456', 55408, টোডেট ('11/21/1991', 'এমএম/ডিডি/ওয়াইওয়াইওয়াইওয়াই')); ট্রিগারটি উপরের ফলাফল অনুযায়ী কাজ করে, এটি কার্যকর হওয়ার আগে INSERT-এর মান পরিবর্তন করে। বিফোর-স্টেটমেন্ট-লেভেল ট্রিগার একটি বিফোর স্টেটমেন্ট ট্রিগার ব্যবহার করে ডাটাবেস সীমাবদ্ধতা প্রয়োগ করার সময় বিশেষভাবে কার্যকর। এই উদাহরণটি দেখায় যে টেবিলের ফোন-বুক-এ "সোমেউসার" নামে একজনের উপর কীভাবে বিধিনিষেধ আরোপ করা যায়। CREATE OR REPLACE TRIGGER Hauschbc INSERT ON করার আগে SOMEUSER.phone_book BEGIN REISE _ APLICATION _ ERROR (num =>-20050, msg => 'ত্রুটি বার্তা এখানে যায়। '); শেষ; এখন, যখন কোনও INSERT চেষ্টা করার পরে "SOMEUSER" লগ ইন করা হবে তখন এই ত্রুটি বার্তাটি দেখাবেঃ SQL ত্রুটিঃ ORA-20050: ত্রুটি বার্তা এখানে যায়। এর মতো কাস্টম ত্রুটিগুলির সংখ্যা পরিবর্তনশীলকে কী হিসাবে সংজ্ঞায়িত করা যেতে পারে তার উপর একটি সীমাবদ্ধতা রয়েছে। অন্যান্য অসংখ্য পূর্বনির্ধারিত ত্রুটির কারণে এই পরিবর্তনশীলটি অবশ্যই-2000 থেকে-209 এর মধ্যে হতে হবে। তথ্যসূত্র বাইরের লিঙ্কগুলি মাইক্রোসফ্ট এসকিউএল সার্ভার ড্রপ ট্রিগার মাইএসকিউএল ডেটাবেস মাইএসকিউএল ডিবি ট্রিগার করে ট্রিগার ডিবি2 তৈরি করুন ট্রিগার স্টেটমেন্ট ওরাকল ট্রিগার তৈরি করুন পোস্টগ্রেএসকিউএল ট্রিগার তৈরি করুন ওরাকল মিউটেটিং টেবিল সমস্যা মুছে ফেলার ক্যাসকেড এসকিউএলাইট প্রশ্ন ভাষার সাথেঃ ট্রিগার ডেটাবেস ম্যানেজমেন্ট সিস্টেমের উপর ট্রিগার ওরাকলের ডকুমেন্টেশন তৈরি করুন (কম্পিউটিং) উদাহরণস্বরূপ এসকিউএল কোড সহ নিবন্ধ