ماشه SQL یک شیء پایگاه داده است که هنگام وقوع یک رویداد در یک پایگاه داده آتش می گیرد. به عنوان مثال ، یک ماشه را می توان در یک جدول رکورد در یک جدول پایگاه داده تنظیم کرد.
محدوده
- در این مقاله ، ما در مورد نحوه ایجاد محرک با نحو SQL و سپس بحث در مورد بخش های مختلف نحو بحث خواهیم کرد. پس از آن ، ما نحوه نمایش و رها کردن یک ماشه را با استفاده از SQL طی خواهیم کرد.
- در این مقاله همچنین در مورد مزایا و مضرات محرک ها بحث شده است.
محرک های SQL چیست؟

ممکن است با موقعیت هایی روبرو شوید که باید مرتباً یک جدول پایگاه داده را برای یک ستون خاص بررسی کنید تا به روز شود ، جایی که ، پس از بروزرسانی ، برخی از کارها را انجام می دهید.
در اینجا اولین راه حل که به ذهن متبادر می شود ، ساخت یک عبارت انتخابی (برای بررسی شرایط خاص) در جدول در فاصله چند ثانیه یا دقیقه است. اما به نظر نمی رسد این یک انتخاب خوب باشد ، درست است؟به جای اینکه از پایگاه داده بپرسیم که آیا داده ها به روز شده اند یا خیر ، پایگاه داده باید به ما بگوید که داده ها به روز می شوند. این دقیقاً همان کاری است که محرک ها انجام می دهند. محرک ها ، همانطور که نام به ما می گوید ، رویه های ذخیره شده هستند (رویه هایی توابع هستند که حاوی بیانیه های SQL هستند که در پایگاه داده ذخیره می شوند و می توانند برخی از خروجی ها را برگردانند) که در هنگام وقوع برخی از حوادث اجرا یا اخراج می شوند. کاربر این رویدادها را تعریف می کند. ماشه ممکن است در یک جدول یا به روزرسانی در یک ردیف موجود و در نقاط دیگر قرار گیرد که در اینجا بحث خواهیم کرد. قبل از حرکت به جلو ، مهم است که در مورد عملیات DDL و DML بحث کنیم.
DDL مخفف زبان تعریف داده است ، که در تغییر ساختار یک جدول ، یعنی ایجاد یک جدول ، اضافه کردن یک ستون به یک جدول موجود یا حذف کل جدول استفاده می شود. با این حال ، DML مخفف زبان دستکاری داده ها است ، که برای دستکاری داده ها استفاده می شود ، یعنی برخی از داده های جدید را در جدول قرار دهید یا داده های موجود را به روز کنید. همچنین ، برای حذف برخی از ردیف ها ، از عملیات DML استفاده می کنیم.
نقاط ماشه SQL ماشه
- هنگامی که هر عملیات DDL انجام می شود. به عنوان مثال ، ایجاد ، تغییر ، رها کردن
- برای یک عملیات DML. به عنوان مثال ، درج ، به روزرسانی ، حذف.
- برای یک عملیات پایگاه داده مانند ورود به سیستم ، ورود به سیستم ، راه اندازی ، خاموش کردن یا ServerError
ایجاد محرک در SQL
همانطور که در بالا مورد بحث قرار گرفت ، می توانیم انواع مختلفی از عملیات را ایجاد کنیم. در این مقاله ، ما روی محرک های DML تمرکز خواهیم کرد زیرا این موارد رایج ترین و گسترده ترین محرک ها و همچنین در عین حال مهمترین آنهاست. ماشه DML را می توان با استفاده از نحو زیر ایجاد کرد.
ايجاد كردن [OR جایگزین کردن ] ماشه trigger_name | بعد از | بجای OF > درج کردن [OR] | به روز رسانی [OR] | حذف> ON جدول_ نام [برای هر یک ردیف] چه زمانی (وضعیت)[trigger_body]
بیایید در مورد قسمت های مختلف نحو بحث کنیم:
- ایجاد [یا جایگزین] ماشه ماشه trigger_name: در خط اول ، ما نام ماشه ای را که در حال ایجاد/به روزرسانی هستیم ، می دهیم. در اینجا [trigger_name] با نامی که می خواهید به ماشه خود بدهید جایگزین می شود.
- : در اینجا ، ما تعریف می کنیم که چه زمانی ماشه اجرا می شود ، یعنی قبل یا بعد از عمل DML. به عنوان مثال ، اگر می خواهیم یک ماشه پس از قرار دادن در یک جدول اجرا شود ، بعد از اینجا می نویسیم.
- : این عملیات یا رویدادی است که ما باید تعریف کنیم ، که باعث می شود روشی برای اجرای آن انجام شود. اگر می خواهیم روشی برای اجرای بعد از اینکه حذف روی جدول اتفاق می افتد ، اجرا کنیم ، در این صورت نوشتن Delete را در اینجا در نظر خواهیم گرفت.
- در [Table_Name]: در اینجا ، ما باید نام جدول را که در آن ماشه را وصل می کنیم ، مشخص کنیم. SQL به تغییرات موجود در این جدول گوش خواهد داد.
- [برای هر ردیف]: این خط مشخص می کند که این روش برای هر یک از ردیف های موجود اجرا می شود. در اینجا می توانیم شرایطی را تنظیم کنیم که ردیف ها برای آن تأثیر بگذارند. این بخش اختیاری است ، هر چند ؛در صورت عدم استفاده از این ، ماشه به جای اینکه یک "سطح ردیف" باشد ، به جای شلیک روش ماشه برای هر سطر ، به یک ماشه "سطح بیانیه" تبدیل می شود. هر بیانیه قابل اجرا
- هنگامی که (شرط): در اینجا ، ما به برخی از پایه های شرط اشاره می کنیم که ماشه در آن اجرا می شود. در صورت عدم وجود شرایط ، می توانید انتظار داشته باشید که برای همه ردیف های واجد شرایط اجرا شود. این بسیار مهم است زیرا این امر کنترل خواهد کرد که چه ردیف هایی را باید اجرا کند.
- [trigger_body]: این منطق اصلی آنچه باید پس از اخراج ماشه انجام شود. در اظهارات قبلی ، تمام آنچه ما تعریف کردیم این است که این ماشه اخراج می شود ، اما در اینجا باید تعریف کنیم که پس از اخراج ماشه چه کاری باید انجام دهیم. این کد اصلی اجرای است.
بیایید مثال بزنیمبیایید یک جدول دانشجویی با شناسه ستون ، first_name ، last_name و full_name فرض کنیم.
پرس و جو 1:
ايجاد كردن جدول دانشجو (شناسه عدد صحیح اولیه کلید ، first_name چرب(50)، نام خانوادگی چرب(50)، نام و نام خانوادگی چرب(50));
در اینجا ما با هماهنگی نام های اول و خانوادگی ، یک ماشه را برای پر کردن نام کامل ایجاد خواهیم کرد. بنابراین در هنگام قرار دادن مقادیر ، ما فقط نام و نام خانوادگی را تغذیه خواهیم کرد و انتظار داریم ماشه به طور خودکار هر سطر را با یک ویژگی ستون اضافی که دارای نام کامل است به روز کند.

ابتدا ، اجازه دهید یک ماشه SQL ایجاد کنیم -
پرس و جو 2:
ايجاد كردن ماشه نام دانش آموز بعد از درج کردن onدانشجوبرای هر یک ردیف شروع دانش آموز را به روز کنید تنظیم نام و نام خانوادگی = نام کوچک || ' ' || نام خانوادگی؛ پایان;
در اینجا می توانیم از پرس و جو ماشه درک کنیم که ما یک ماشه را تنظیم کرده ایم که یک درج برای دانش آموز جدول ساخته شده است. پس از انجام درج ، این روش اخراج می شود ، که یک دستور بروزرسانی را برای به روزرسانی نام کامل دانش آموزان اجرا می کند.
بیایید دانش آموزان را وارد کنیم.
پرس و جو 3:
/ * در این جدول چند رکورد ایجاد کنید */ درج کردن به دانشجو (شناسه ، first_name ، last_name) ارزش های(1,"الوارو", 'Morte'); درج کردن به دانشجو (شناسه ، first_name ، last_name) ارزش های(2,'ursula', "کوربرو"); درج کردن به دانشجو (شناسه ، first_name ، last_name) ارزش های(3,'Itziar', "ایتونو"); درج کردن به دانشجو (شناسه ، first_name ، last_name) ارزش های(4,"پدرو", "آلونسو"); درج کردن به دانشجو (شناسه ، first_name ، last_name) ارزش های(5,"آلبا", "فلورس");
در اینجا ما داده های پنج دانش آموز را درج کرده ایم ، و از آنجا که ما یک ماشه ایجاد شده در سیستم خود برای به روزرسانی Full_Name داریم ، اگر یک پرس و جو انتخابی را در این جدول اجرا کنیم ، انتظار داریم نام کامل غیر خالی باشد.
پرس و جو 4:
/ * تمام سوابق را از جدول نمایش دهید */ انتخاب کنید * از جانب دانشجو؛
خروجی:
| emp_id | نام کوچک | نام خانوادگی | نام و نام خانوادگی |
| 1 | الوارو | مردانه | الوارو مورته |
| 2 | عیاش | کوربرو | اورسولا کوربرو |
| 3 | ایزیار | ایتونو | Itziar Ituno |
| 4 | بچه | الونسو | پدرو آلونسو |
| 5 | ایل | گل | آلبا فلورس |
در اینجا می بینیم که از آنجا که ما یک بیانیه به روزرسانی در روش ماشه در پرس و جو 2 داشتیم ، نام های کامل به طور خودکار بلافاصله پس از انجام درج ها به روز می شوند.
لطفاً توجه داشته باشید که ما یک ماشه پس از آن ایجاد کرده ایم ، به این معنی که ماشه پس از انجام درج اجرا می شود (که یک عمل DML است).
محرک های نمایش در SQL
اگر کسی ماشه ایجاد کند اما نام ماشه را فراموش کند ، می توانید با اجرای یک دستور ساده ، ماشه را پیدا کنید.
پرس و جو 6:
نشان دادن محرک پسندیدن "stu ٪" g ؛
این دستور لیست همه محرک های موجود را با رشته "STU" به شما نشان می دهد. توجه داشته باشید که برچسب g عبارت را درست مانند یک قسمت (؛) پایان می دهد. با این حال ، از آنجا که جدول خروجی گسترده است ، g جدول را به صورت بصری به حالت عمودی می چرخاند.
mysql> نشان دادن محرک پسندیدن "stu ٪"G ********************* 1. ردیف ********************* ماشه: نام دانش آموز رویداد: درج کردن جدول: دانشجو بیانیه: تنظیم نام و نام خانوادگی = نام کوچک || '' || نام خانوادگیزمان بندی: بعدایجاد شده: خالیsql_mode: no_engine_substitionتعریف کننده: منlocalhostکاراکتر_SET_CLIENT: UTF8 COLLATION_CONNECTION: UTF8_GENERAL_CIمجموعه پایگاه داده جمع شدن: latini_swedish_ci
محرک های DROP در SQL
حذف یک ماشه کاملاً ساده است. برای حذف یک ماشه از پایگاه داده ، باید یک پرس و جو ساده اجرا کنید.
بنابراین در مورد ما ، طبق مثال فوق ، پرس و جو خواهد بود
پرس و جو 5:
افت ماشه نام دانش آموز؛
این امر ماشه را از پایگاه داده پاک می کند.
مزایای محرک ها در SQL
- با استفاده از محرک ها ، می توانید بیشتر استفاده از برنامه ریزان را از بین ببرید. برنامه ریزان برنامه هایی هستند که در پس زمینه کار می کنند و به اجرای یک کار در یک زمان خاص کمک می کنند. این چک های به موقع قابل حذف است و در عوض هر زمان که یک داده خاص با استفاده از محرک ها تغییر کند ، بلافاصله بررسی می شود. این اساساً جایگزینی بهتر برای برنامه ریزان است.
- اینها در داشتن چک های امنیتی اضافی مفید هستند. بسیاری از مؤلفه های مهم در نرم افزار تجاری وجود دارد و برخی از آنها ممکن است در صورت عدم مراقبت صحیح از داده های بسیار حساس خطرناک باشند. بسیاری از توسعه دهندگان روی یک مؤلفه مهم کار می کنند ، بنابراین برای داده های درج ، به روزرسانی یا حذف باید برخی از چک های امنیتی انجام شود. در اینجا باعث می شود با هشدار در مورد مسائل امنیتی در صورت وجود ، در حفظ سیستم سالم کمک کنند.
- می توان با داشتن چک برای آن ستون یا یک به روزرسانی ساده ، خطر وارد کردن داده های نامعتبر در یک ستون را از بین برد. بیایید در جدول student_name بگوییم (جایی که first_name و middle_name هر دو قابل تهی هستند ، یعنی هر دو ستون می توانند مقادیر تهی را بپذیرند) ، کسی یک ردیف را با middle_name درج کرده است. در اینجا درج موفقیت آمیز خواهد بود ، اما داده ها نامعتبر هستند. ما می توانیم خطا را وارد کنیم ، یا همچنین می توانیم مقدار middle_name را به first_name منتقل کنیم.
- اینها در فعالیت های تمیز کردن مفید هستند زیرا می توانیم برخی از روشهای پاکسازی را در مورد گوش دادن به رویدادهای حذف انجام دهیم. به عنوان مثال ، دو جدول ، دانش آموزان و والدین وجود دارد. در حالت ایده آل ، اگر اطلاعات برخی دانش آموزان را از جدول دانش آموز حذف کنیم ، داده های مربوطه از والدین (مدخل های والدینی که فرزندانشان از بین می روند) نیز باید حذف شوند. از آنجا که ما مستعد چنین اشتباهاتی هستیم که فراموش می کنیم داده ها را از جدول والدین حذف کنید که از دانش آموزان حذف می شود ، می توانیم با استفاده از محرک ها این کار را به راحتی انجام دهیم. ما می توانیم در حذف دانش آموزان ماشه ای داشته باشیم ، که در هر عملیات حذف ، ممکن است ورود مربوط به جدول والدین را حذف کنیم.
مضرات محرک ها در SQL
- عیب یابی آنها دشوار است زیرا به طور خودکار اجرا می شوند و ورود به سیستم نادرست منجر به به روزرسانی های ناشناخته خواهد شد ، که می تواند برای اشکال زدایی در پروژه های در مقیاس بزرگ بسیار وقت گیر باشد.
- محرک ها سربار نمایش داده های DML پایگاه داده را افزایش می دهند. از آنجا که برای هر ردیف ما وارد می کنیم ، به روز می کنیم یا حذف می شویم ، ممکن است یک به روزرسانی یا درج انجام شود - در یک جدول جدید بگویید ، یا حتی یک ردیف حذف کنید که در حال حاضر ممکن است در حال حاضر لازم نباشد.
- فقط اعتبار سنجی محدود می تواند در محرک هایی مانند چک های تهی ، چک های برابری ، چک های منحصر به فرد و غیره انجام شود. اگرچه ما می توانیم از محرک ها برای رسیدگی به بسیاری از موارد استفاده تجاری خود استفاده کنیم ، اما برای هر مورد یک راه حل اثبات کامل ارائه نمی دهد. از آنجا که SQL یک زبان دستکاری داده است ، ما نمی توانیم انتظار داشته باشیم که آن را جایگزین وابستگی زبان برنامه نویسی برای اعتبار سنجی کند. ما هنوز هم باید به اعتبار دیگر وابسته باشیم. همچنین ، در برخی از سناریوها ، اعتبار سنجی داده ها در SQL در مقایسه با اعتبار سنجی در سمت سرویس ، پرهزینه است.
نتیجه
- در این مقاله ، ما بررسی کردیم که چه عواملی در SQL وجود دارد و چگونه می توانیم یک ماشه ایجاد کنیم.
- ما مثالی را طی کردیم که استفاده از محرک ها را در جداول پایگاه داده نشان می داد.
- همچنین ، ما در مورد مزایا و مضرات استفاده از محرک ها بحث کردیم.
- محرک ها همچنین یک روش عالی برای رسیدگی به اعتبار سنجی ها و بررسی ها قبل از هرگونه عمل است.
- از آنجا که این می تواند به سربار ناشناخته منجر شود ، باید از تعداد ردیف هایی که توسط ماشه تحت تأثیر قرار می گیرند مراقبت کند.
بیشتر بدانید:
پرسش و پاسخ بورس...
ما را در سایت پرسش و پاسخ بورس دنبال می کنید
برچسب :
نویسنده : ماندانا اصلانی
بازدید : <-PostHit->
تاريخ : پنجشنبه
31 فروردين
1402 ساعت: 13:07