Triggers در MySQL چیست و چگونه در دیتابیس Trigger بسازیم

Triggers در MySQL چیست و چگونه در دیتابیس Trigger بسازیم

بصورت کلی یک تریگر(Trigger) در MySQL یک شیء دیتابیس است که به صورت خودکار یک عمل یا مجموعه‌ای از اعمال مشخص را در پاسخ به وقوع رویدادهای خاص در دیتابیس اجرا میکنه

بصورت کلی یک تریگر(Trigger) در MySQL یک شیء دیتابیس است که به صورت خودکار یک عمل یا مجموعه‌ای از اعمال مشخص را در پاسخ به وقوع رویدادهای خاص در دیتابیس اجرا می‌کند.

این رویدادها میتونه شامل INSERT، UPDATE، DELETE یا حتی رویدادهای شروع و پایان کار دیتابیس باشند.

تریگرها برای اطمینان از صحت داده‌ها، حفظ یکپارچگی و خودکارسازی کارهای تکراری در دیتابیس استفاده می‌شوند.

کد زیر مثال ساده‌ای از ایجاد تریگر در MySQL هست:

CREATE TRIGGER my_trigger
BEFORE INSERT ON my_table
FOR EACH ROW
BEGIN
    -- Trigger body: Perform actions before inserting into my_table
    SET NEW.column_name = 'value';
END;

 

توی مثال بالا، یک تریگر BEFORE INSERT با نام my_trigger بر روی جدول my_table ایجاد شده. بدنه تریگر مقدار یک ستون را قبل از درج یک ردیف جدید در جدول تغییر می‌ده.

به طور کلی، تریگرها در MySQL ابزارهای قدرتمندی برای خودکارسازی وظایف دیتابیس، اطمینان از صحت داده‌ها و پیاده‌سازی منطق کسب و کار درون دیتابیس هستند. با این حال، باید با دقت استفاده بشن تا از عواقب ناخواسته و حفظ عملکرد سیستم دیتابیس جلوگیری بشه.

 

اجزای کلیدی و مفاهیم مرتبط با تریگرها در MySQL:

  1. رویداد(Event): تریگرها با رویدادهای خاصی که بر روی یک جدول رخ میده مانند عملیات INSERT، UPDATE یا DELETE مرتبط هستن. زمانی که رویداد مشخصی بر روی جدول رخ میده، تریگر فعال میشه و اعمال تعریف شده اون رو اجرا می‌کنه.
  2. زمان‌بندی(Timing): تریگرها بر اساس زمان‌بندی‌شون طبقه‌بندی میشن که تعیین میکنه اعمال تریگر در چه زمانی نسبت به رویداد فعال کننده اجرا بشه. دو نوع اصلی زمان‌بندی تریگرها عبارتند از:
    • BEFORE: اعمال تعریف شده در یک تریگر BEFORE قبل از اعمال رویداد فعال کننده بر روی جدول اجرا می‌شوند. این تریگرها معمولاً برای اعتبارسنجی یا تغییر داده‌ها قبل از درج، به‌روزرسانی یا حذف استفاده می‌شوند.
    • AFTER: اعمال تعریف شده در یک تریگر AFTER پس از اعمال رویداد فعال کننده بر روی جدول اجرا می‌شوند. این تریگرها معمولاً برای انجام وظایفی مانند ثبت تغییرات، به‌روزرسانی جداول دیگر یا اجرای محدودیت‌های یکپارچگی ارجاعی استفاده می‌شوند.



    •  
  3. بدنه تریگر(Trigger Body): بدنه تریگر شامل دستورات SQL یا کدهای پردازشی است که اعمالی را که باید هنگام فعال شدن تریگر انجام شوند تعریف می‌کند. این میتونه شامل یک یا چند دستور SQL، و همچنین فراخوانی به توابع یا رویه‌های ذخیره شده باشد.
  4. دسترسی به داده‌ها(Access to Data): تریگرها در MySQL به مقادیر قدیمی و جدید ردیف‌های تأثیر گرفته از رویداد فعال کننده دسترسی دارند. این امکان به تریگرها اجازه می‌دهد تا مقادیر قبل و بعد از رویداد را مقایسه کنند، که این امر برای اعمالی مانند اعتبارسنجی داده‌ها، ثبت رویدادها یا حفظ یکپارچگی ارجاعی مفید است.
  5. تریگرهای متعدد(Multiple Triggers): تریگرهای متعدد میتونن  روی یک جدول برای رویدادها و زمان‌بندی‌های مختلف تعریف بشن. تریگرها بر اساس زمان‌بندی‌شون به ترتیب معینی اجرا میشن (تریگرهای BEFORE قبل از تریگرهای AFTER اجرا میشن).
  6. ایجاد تریگر(Trigger Creation): تریگرها در MySQL با استفاده از دستور CREATE TRIGGER ایجاد میشن که نام تریگر، رویداد فعال کننده، زمان‌بندی، جدول مربوطه و بدنه تریگر رو مشخص میکنه.

 

حالا که با تریگرها آشنا شدیم با همدیگه یاد بگیریم که چطور میتونیم تریگر ایجاد کنیم:

فرض کنید جدولی بنام Employees داریم و میخوایم بعد از اینکه حقوق جدید کارمندهامون توی این جدول ثبت شدن جدول Company_expenses آپدیت بشه:

CREATE TRIGGER update_expenses AFTER INSERT ON Employees
FOR EACH ROW
BEGIN
    UPDATE Company_expenses
    SET salaries_expenses = salaries_expenses + NEW.salary;
END;

 

آشنایی با تریگر BEFORE:

تریگر BEFORE قبل از اجرای یک عملیات انجام میشه، فرض کنید میخواهیم قبل از ثبت حقوق جدید، مقدار حقوق رو اعتبار سنجی کنیم، یک تریگر بصورت زیر مینویسم:

CREATE TRIGGER adjust_salary BEFORE INSERT ON Employees
FOR EACH ROW
BEGIN
    IF NEW.salary < 30000 THEN
        SET NEW.salary = 30000;
    END IF;
END;

 

آشنایی با تریگر AFTER:
فرض کنید میخوایم یه تریگر بنویسم که بعد از واریز حقوق مالیات رو توی جدول Company_expenses حساب کنه:

CREATE TRIGGER update_tax AFTER UPDATE ON Employees
FOR EACH ROW
BEGIN
    UPDATE Company_expenses
    SET taxes = (SELECT SUM(salary * 0.2) FROM Employees);
END;

 

توی این مطلب با تریگر ها و انواع اونها آشنا شدیم و میدونیم که تریگرها ابزارهای قدرتمندی برای مدیریت خودکار وظایف در دیتابیس و حفظ یکپارچگی داده‌ها هستند و با استفاده صحیح میتونن کارایی و دقت عملیات‌های دیتابیس را افزایش بدن.

 

امیدوارم این مطلب برای شما مفید بوده باشه. خوشحال میشم از بخش نظرات، نظرات خودتون رو با ما در میون بزارید. :)


برچسب ها:

mysql Trigger آموزش mysql

دسته بندی ها:


ارسال نظر

برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *

ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *

اگر نظری برای این مطلب ارسال شد از طریق ایمیل مرا اطلاع بده!
لسیت نظرات
هنوز برای این مطلب نظری ارسال نشده است!