কোনও সারি প্রভাবিত না হওয়া সত্ত্বেও ট্রিগার গুলি চালানো হচ্ছে


10

এটি একটি সাধারণ প্রশ্নের চেয়ে বেশি তবে এসকিউএল সার্ভার ব্যবহার করার সময় এই প্রশ্নের উত্সাহটি আমার একটি সমস্যা ছিল।

আমি এই ট্রিগারটি একটি টেবিলের একটি সন্নিবেশ ইভেন্টের সাথে সংযুক্ত করেছি যাতে কিছু যুক্তি রয়েছে যা পার্শ্ব প্রতিক্রিয়া হিসাবে, কোনও সারি সন্নিবেশ না করা হলে ত্রুটি বাড়িয়ে তুলবে। আরও তদন্তের পরে, আমি আবিষ্কার করেছি যে কোনও সারি সন্নিবেশ না করা সত্ত্বেও ট্রিগারটি গুলি চালছিল।

ডিএমএল ট্রিগারগুলিতে মাইক্রোসফ্ট ডক্সে ব্যবহৃত ভাষাটি এই আচরণের বিরোধিতা করে বলে মনে হচ্ছে:

ডিএমএল ট্রিগারগুলি একটি বিশেষ ধরণের সঞ্চিত প্রক্রিয়া যা কোনও ডিএমএল ইভেন্ট সংঘটিত হওয়ার পরে স্বয়ংক্রিয়ভাবে কার্যকর হয় যা টেবিলে প্রভাবিত করে বা ট্রিগারটিতে সংজ্ঞায়িত ভিউ।

এটি কি ডিবিএমএস জুড়ে ডিফল্ট আচরণ? কোনও সারি প্রভাবিত না হলে ট্রিগার চালানোর কোনও বিশেষ কারণ আছে?

উত্তর:


24

ডিএমএল ক্রিয়াগুলির জন্য, সারি ভিত্তিক এবং বিবৃতি ভিত্তিক ট্রিগার রয়েছে।

  • প্রতিটি সারি প্রভাবিত হয়ে গেলে (সন্নিবেশ / আপডেট / মুছে ফেলা হয়) যখন সারিটি আগুন দেয় before সুতরাং যদি 100 টি সারি প্রভাবিত হয় তবে তারা 100 বার অগ্নিসংযোগ করবে এবং যদি 0 টি সারি প্রভাবিত হয় তবে তা নয়।

  • বিবৃতি INSERT / UPDATE / DELETEকার্যকর করা হলে বিবৃতি আগুন দেয় । কোনও সারি প্রভাবিত হয় না তা বিবেচ্য নয়। বিবৃতি স্তর যাইহোক এবং কেবল একবার বিবৃতিতে আগুনের সূত্রপাত করে (এটি 0, 100 বা এক বিলিয়ন সারি প্রভাবিত হোক)।

কিছু ডিবিএমএসের কেবল সারি স্তরের ট্রিগার (মাইএসকিউএল) থাকে।

অন্যদের (যেমন এসকিউএল সার্ভার * যা আপনার ডিবিএমএস) কেবল বিবৃতি স্তরের ট্রিগার থাকে।

অন্য কারও (ডিবি 2, ওরাকল, পোস্টগ্রিস) উভয় ধরণের ট্রিগার রয়েছে।


* এসকিউএল সার্ভার CREATE TRIGGERডক্স বিবরণ :

যখন কোনও ব্যবহারকারী ডেটা ম্যানিপুলেশন ল্যাঙ্গুয়েজ (ডিএমএল) ইভেন্টের মাধ্যমে ডেটা পরিবর্তন করার চেষ্টা করে তখন ডিএমএল সম্পাদন করে। DML ঘটনা INSERT, UPDATEঅথবা DELETEএকটি টেবিল বা দৃশ্য বিবৃতি। কোনও সারণী সারিগুলি প্রভাবিত হয় বা না তা নির্বিশেষে কোনও বৈধ ইভেন্ট নিক্ষেপ করা হলে এইগুলি আগুন দেয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.