ماشه SQL چیست؟

ساخت وبلاگ

یک ماشه SQL یک روش ذخیره شده ویژه است که هنگام انجام اقدامات خاص در یک پایگاه داده اجرا می شود. بیشتر محرک های بانک اطلاعاتی هنگام ایجاد تغییرات در داده های جدول ، برای اجرای آن تعریف می شوند. ماشه ها را می توان به جای یا بعد از DML یا بعد از DML (زبان دستکاری داده) مانند درج ، به روزرسانی و حذف تعریف کرد.

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

این برنامه ها از زمان یک رویداد ، مانند اضافه کردن یک رکورد به یک جدول ، به عنوان محرک نامیده می شوند.

محرک ها و پیاده سازی های آنها مخصوص فروشندگان پایگاه داده است. در این مقاله ما روی Microsoft SQL Server تمرکز خواهیم کرد. با این حال ، مفاهیم در Oracle و MySQL یکسان یا مشابه هستند.

توجه: تمام نمونه های این درس بر اساس استودیوی مدیریت Microsoft SQL Server و پایگاه داده AdventureWorks2012 ساخته شده است. با استفاده از راهنمای من با استفاده از SQL Server می توانید با استفاده از این ابزارهای رایگان شروع کنید.

فهرست مطالب

  • ماشه پایگاه داده چیست؟
  • SQL وقایع را تحریک می کند
    • بعد از محرک ها
    • به جای محرک ها
    • اشیاء خاص پایگاه داده
    • حسابرسی پیچیده
    • اجرای قوانین تجاری
    • مقادیر ستون را استخراج کنید

    SQL وقایع را تحریک می کند

    محرک ها می توانند بعد از یا به جای یک عمل DML رخ دهند. محرک ها با اقدامات DML DATABASE درج ، به روزرسانی و حذف همراه هستند. هنگام اجرای این اقدامات در یک جدول خاص ، محرک ها برای اجرای آن تعریف می شوند.

    بعد از محرک ها

    پس از اتمام اقدامات DML ، مانند درج ، ماشه پس از آن اجرا می شود. در اینجا برخی از ویژگی های کلیدی After Triggers آورده شده است:

    • پس از اجرای محرک ها پس از یک عمل DML ، مانند بیانیه درج و هرگونه اقدامات آبشار مرجع متعاقب آن و بررسی های محدودیت انجام شده است.
    • شما نمی توانید عمل پایگاه داده را با استفاده از یک ماشه پس از آن لغو کنید. این امر به این دلیل است که این عمل قبلاً به پایان رسیده است.
    • یک یا چند بعد از محرک در هر عمل می تواند روی یک میز تعریف شود ، اما برای ساده نگه داشتن کارها توصیه می کنم فقط یک مورد را تعریف کنید.
    • شما نمی توانید بعد از محرک های دیدگاه تعریف کنید.

    به جای محرک ها

    به جای محرک ها ، همانطور که از نام آنها پیداست ، به جای عمل DML که باعث آتش سوزی آنها شد ، اجرا شود. مواردی که باید هنگام استفاده به جای محرک ها در نظر بگیرید عبارتند از:

    • به جای ماشه ، عمل تحریک را نادیده می گیرد. اگر به جای ماشه برای اجرای عبارت درج تعریف شده باشد ، پس از تلاش برای اجرای عبارت درج ، کنترل بلافاصله به جای ماشه منتقل می شود.
    • حداکثر ، یکی به جای ماشه را می توان در هر عمل برای یک جدول تعریف کرد. این منطقی است ، گویی که شما به جای "به جای" محرک برای درج ، کدام یک باید اجرا کنید؟

    اشیاء خاص پایگاه داده

    محرک ها برای دسترسی به ردیف های تحت تأثیر اقدامات پایگاه داده ، از دو شیء ویژه پایگاه داده ، درج و حذف شده استفاده می کنند. در محدوده یک ماشه ، اشیاء درج شده و حذف شده دارای ستون های مشابه جدول Trigger هستند.

    جدول درج شده شامل تمام مقادیر جدید است. در حالی که ، جدول حذف شده حاوی مقادیر قدیمی است. در اینجا نحوه استفاده از جداول آورده شده است:

    • درج - از جدول درج شده استفاده کنید تا مشخص شود کدام ردیف ها به جدول اضافه شده اند.
    • حذف - از جدول حذف شده استفاده کنید تا ببینید کدام ردیف ها از جدول خارج شده اند.
    • بروزرسانی - برای بازرسی از مقادیر جدید یا به روز شده و جدول حذف شده از جدول درج شده استفاده کنید تا مقادیر قبل از بروزرسانی را ببینید.

    تعریف

    یک ماشه SQL برای یک جدول خاص و یک یا چند رویداد تعریف شده است. در اکثر سیستم های مدیریت پایگاه داده فقط می توانید یک ماشه را در هر جدول تعریف کنید.

    در زیر مثالی از پایگاه داده AdventureWorks2012 آورده شده است.

    Example AFTER INSERT trigger

    متوجه خواهید شد که نحو برای یک ماشه SQL بسیار شبیه به روش ذخیره شده است. در حقیقت ، ماشه از همان زبان برای اجرای منطق خود مانند روشهای ذخیره شده استفاده می کند. در MS SQL ، این T-SQL است. در حالی که در اوراکل PL/SQL است.

    در اینجا چند قسمت مهم برای یک ماشه وجود دارد:

    1. بیانیه ایجاد - تعریف می کند که کدام جدول با ماشه همراه است. علاوه بر این ، این عبارت برای مشخص کردن زمان اجرای ماشه (به عنوان مثال پس از درج) استفاده می شود.
    2. برنامه واقعیبه عنوان مثال ، این برنامه هر زمان که یک یا چند ردیف در جدول کار قرار می گیرد اجرا می شود.
    3. اشیاء ویژه بانک اطلاعاتی - محرک ها از اشیاء مشخصه ای خاص مانند درج شده یا حذف شده برای دسترسی به سوابق تحت تأثیر عمل پایگاه داده استفاده می کنند.
    4. در این مثال ماشه از شیء درج شده برای دستیابی به ردیف های تازه ایجاد شده استفاده می کند. عبارت درج برای قرار دادن آن ردیف ها و اضافه کردن آنها به یک جدول تاریخ استفاده می شود.

    برای محرک ها استفاده می کند

    در اینجا برخی از کاربردهای متداول برای محرک ها وجود دارد:

    حسابرسی پیچیده

    برای ردیابی تغییرات در جداول می توانید از محرک ها استفاده کنید. در مثال بالا ، تغییراتی در جدول کار ایجاد شده است.

    به طور معمول هنگام ایجاد مسیرهای حسابرسی ، بعد از محرک ها استفاده خواهید کرد.

    ممکن است فکر کنید که این کار زائد است ، زیرا بسیاری از تغییرات در مجلات پایگاه داده وارد شده اند ، اما سیاهههای مربوط برای بازیابی بانک اطلاعاتی است و توسط برنامه های کاربر به راحتی قابل دسترسی نیست. جدول TransactionHistory به راحتی ارجاع شده است و می تواند در گزارش های کاربر نهایی گنجانیده شود.

    اجرای قوانین تجاری

    قبل از انجام یک عمل DML می توان از محرک های SQL برای بازرسی کلیه داده ها استفاده کرد. شما می توانید به جای محرک ها برای "رهگیری" عملیات DML در انتظار ، اعمال هرگونه قوانین تجاری و در نهایت انجام معامله استفاده کنید.

    یک قانون تجاری مثال ممکن است این باشد که وضعیت مشتری به این صورت تعریف شده است:

    • طلا - در 12 ماه گذشته بیش از 1،000،000 دلار خریداری می کند.
    • نقره - خرید 500000 تا 1،000،000 دلار در 12 ماه گذشته.
    • برنز - تمام سطوح خرید دیگر.

    به جای ماشه می تواند برای بررسی وضعیت مشتری هر بار که یک رکورد مشتری اضافه یا اصلاح شود ، تعریف شود. بررسی وضعیت شامل ایجاد مبلغی از کلیه خریدهای مشتریان و اطمینان از وضعیت جدید با مجموع 12 ماه گذشته خرید است.

    مقادیر ستون را استخراج کنید

    از محرک ها می توان برای محاسبه مقادیر ستون استفاده کرد. به عنوان مثال ، برای هر مشتری ممکن است بخواهید یک ستون TotalSales را در سوابق مشتری حفظ کنید. البته ، برای اینکه این موضوع دقیق بماند ، باید هر بار که فروش انجام می شد ، به روز شود.

    این کار می تواند با استفاده از یک ماشه After Trigger در درج ، به روزرسانی و حذف اظهارات جدول فروش انجام شود.

    محرک های SQL مشکل هستند!

    به طور کلی ، توصیه من این است که از استفاده از محرک ها خودداری کنید مگر اینکه کاملاً لازم باشد.

    شما باید از استفاده از محرک ها به جای ویژگی های ساخته شده خودداری کنید. به عنوان مثال ، به جای اینکه به محرک ها برای اجرای یکپارچگی مرجع اعتماد کنید ، بهتر است از روابط استفاده کنید.

    در اینجا دلایلی آورده شده است که من از آنها دور می شوم:

    1. عیب یابی آنها دشوار است.
    2. محرک ها می توانند باعث آتش سوزی دیگر شوند. دو جدول ، A و B ، هر دو دارای یک ماشه پس از بروزرسانی هستند. اگر جدول به روزرسانی در جدول A به روزرسانی های جدول B ، به روزرسانی جدول A باعث ایجاد محرک و سپس آتش سوزی B می شود.
    3. شما باید مطمئن باشید که طوفان ماشه ایجاد نمی کنید! آیا می توانید تصور کنید که جدول B ، به دلایلی ، جدول به روز شده A؟اکنون شما یک مرجع دایره ای دارید ... رونق!
    4. من سعی می کنم به همان اندازه منطق را به روشهای ذخیره شده منتقل کنم و برنامه هایی داشته باشم که از طریق آنها به جای بیانیه های SQL مستقیم ، از طریق آنها تغییر ایجاد کند.

    پست های مرتبط

    • دستکاری داده ها با SQL - راهنمای نهایی
    • بخش عمده SQL DB چیست؟
    • بیانیه بروزرسانی SQL (Transact SQL)
    • بیانیه حذف SQL (Transact SQL)
    • عملکرد SQL Stuff (Transact SQL)

    این سایت از Akismet برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه داده های نظر شما پردازش می شود.

    Pingback: بخش عمده SQL DB چیست؟- SQL ضروری Reef می گوید:

    "در مثال ما در بالا ، تغییراتی در جدول Workorder یک جدول معاملات Transactory ثبت شده است."شما به یک "در" درست پس از کلمه "ضبط شده" نیاز دارید.

آموزش مقدماتی فارکس...
ما را در سایت آموزش مقدماتی فارکس دنبال می کنید

برچسب : نویسنده : علیرام نورایی بازدید : 42 تاريخ : چهارشنبه 15 شهريور 1402 ساعت: 19:22