چگونه با محرک ها و انواع آن در SQL کار کنیم؟

  • 2021-08-10

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

انواع محرک ها

محرک ها شامل سه نوع به شرح زیر هستند.

  • DML باعث می شود
  • DDL باعث می شود
  • ورود به سیستم

DML باعث می شود

DML مخفف زبان دستکاری داده است. درج ، به روزرسانی و حذف اظهارات عبارت DML است. هر زمان که داده ها با استفاده از Insert ، Update و Delete Events اصلاح شوند ، محرک های DML اخراج می شوند.

محرک های DML را می توان دوباره به 2 نوع طبقه بندی کرد.

1. بعد از محرک ها (که گاهی اوقات برای محرک ها فراخوانده می شوند)

2. به جای محرک ها

بعد از محرک ها

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

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

SQL Script برای ایجاد جدول Tblemployee:

سرانجام ، جدول مانند زیر به نظر می رسد.

SQL Script برای ایجاد جدول tblemployeeaudit:

پس از اضافه شدن یک کارمند جدید به جدول در پایگاه داده. اکنون ، من می خواهم شناسه ، تاریخ و زمان را بازیابی کنم ، کارمند جدید به جدول TblemaveeAudit اضافه می شود. ساده ترین راه برای به دست آوردن همان نتیجه با استفاده از یک ماشه After برای درج رویداد.

بعد از ماشه برای درج

مثال پس از ماشه برای درج رویداد در جدول Tblemployee به شرح زیر است.

پس از این ، شناسه را از نام جدول درج شده دریافت می کنیم. بنابراین ، این سؤال پیش می آید ، نقش یک جدول درج شده چیست؟یک جدول درج شده یک جدول را تعریف می کند که عمدتا توسط محرک های DML استفاده می شود. پس از یک بار ، یک ردیف جدید به جدول Tblemployee اضافه می کنید ، به طور مشابه ، یک ردیف همان کپی را در جدول درج شده ایجاد می کند ، جایی که فقط یک ماشه می تواند از طریق عملکرد به آن دسترسی پیدا کند. علاوه بر این ، شما قادر به دسترسی به این جدول خارج از متن عملکرد ماشه نخواهید بود. ساختار جدول درج شده باید با ساختار جدول Tblemployee یکسان باشد.

بنابراین ، اگر دستور درج زیر را در Tblemployee اجرا کنیم. به طور همزمان ، پس از قرار دادن داده های ردیف در جدول Tblemployee ، سپس ماشه با استفاده از آن به طور خودکار شلیک می شود و همان ردیف وارد شده در جدول TblemaveeAudit است.

وارد ارزش های کارآموز (7 ، "برنزه" ، 2300 ، "زن" ، 3)

هنگامی که یک ردیف سوابق را از روی میز کارمند حذف می کند. به عنوان مثال بعد از ماشه برای حذف رویداد یک جدول Tblemployee:

بعد از به روزرسانی ماشه

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

پس از بروزرسانی اسکریپت ماشه ایجاد کنید:

So, execute the query: Update tblEmployee set Name = ‘Tods’, Salary = 2000, Gender = ‘Female’ where >

علاوه بر این ، پس از اجرای دستور به روزرسانی ، ماشه پس از بروزرسانی اخراج می شود ، و محتویات جداول درج شده و حذف شده را می بینید و داده های حسابرسی را در جدول Tblemaleaudit ذخیره می کند.

به جای اینکه ماشه را وارد کنید

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

بنابراین ، ما با نسخه ی نمایشی پایه در جداول کارمند و بخش شروع می کنیم. بنابراین ، ابتدا ، اجازه دهید این 2 جدول را ایجاد کنیم.

SQL Script برای ایجاد جدول Tblemployee:

ایجاد Table Tblemployee (ID INT KEY PRIMANY ، NAME NVARCHAR (30) ، جنسیت NVARCHAR (10) ، DEPARTIONID INT)

SQL Script برای ایجاد جدول tbldepartment:

TBLDEPARTMENT TABLE (Deptid Int Primary Key ، Deptname Nvarchar (20))

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

اسکریپت برای ایجاد نمای:

ایجاد VWEMPLAYEDETAILS به عنوان شناسه ، نام ، جنسیت ، نام DeptName از TBLDEPARTMENT در TBLDPARTMENT در TBLEMENEE. DepartmentId = tblDepartment. DeptId

پس از اجرای این خط ، * * از VWEMPLOYEEDETAILS را انتخاب کنید ، تمام سوابق موجود در جدول را به شرح زیر بازیابی می کند.

بنابراین ، بیایید با اجرای پرس و جو زیر ، یک ردیف واحد را در عملکرد مشاهده ، VWEMPLOYEEDETAILS وارد کنیم. در این لحظه ، خطایی مانند "مشاهده یا عملکرد VWEMPLOYEEDETAILS به روز نمی شود زیرا اصلاح بر چندین جدول پایه تأثیر می گذارد."

وارد ارزش های VWEMPLOYEEDETAILS (7 ، "والاری" ، "زن" ، "IT")

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

اسکریپت برای ایجاد به جای درج ماشه:

بنابراین ، بیایید پرس و جو درج را به شرح زیر اجرا کنیم:

وارد ارزش های VWEMPLOYEEDETAILS (7 ، "والاری" ، "زن" ، "IT")

به جای Trigger سوابق عاقلانه ، سوابق داده ها را در جدول Tblemployee قرار می دهد. از آنجا که ما سوابق داده را در جدول درج شده قرار می دهیم ، که حاوی داده های ردیف تازه اضافه شده است ، در حالی که جدول حذف شده حاوی خالی است.

در عمل ماشه ، ما از تابع Raiserror () برای نشان دادن یک خطای سفارشی استفاده کردیم ، هنگامی که نام گروه در پرس و جو درج ارائه می دهد ، این وجود ندارد. این سه پارامتر را به روش Raiserror () منتقل می کند. پارامتر اول پیام خطا را نشان می دهد و پارامتر دوم میزان شدت را نشان می دهد. شدت سطح 16 ، که نشانگر خطاهای عمومی است که فقط برای تصحیح کاربر قابل دسترسی است. پارامتر نهایی پارامتر حالت را نشان می دهد.

به جای به روزرسانی ماشه

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

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

SQL Script برای ایجاد جدول Tblemployee:

ایجاد Table Tblemployee (ID INT KEY PRIMANY ، NAME NVARCHAR (30) ، جنسیت NVARCHAR (10) ، DEPARTIONID INT)

اسکریپت SQL برای ایجاد جدول tbldepartment

TBLDEPARTMENT TABLE (Deptid Int Primary Key ، Deptname Nvarchar (20))

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

اسکریپت برای ایجاد نمای:

ایجاد VWEMPLAYEDETAILS به عنوان شناسه ، نام ، جنسیت ، نام DeptName از TBLDEPARTMENT در TBLDPARTMENT در TBLEMENEE. DepartmentId = tblDepartment. DeptId

پس از اجرای این خط ، * * از VWEMPLOYEEDETAILS را انتخاب کنید ، تمام سوابق موجود در جدول را به شرح زیر بازیابی می کند.

در مثال بالا ، هنگامی که ما یک ردیف واحد را در جدول مشاهده قرار دادیم و یک عبارت خطای مانند- مشاهده یا عملکرد VWEMCAILEEDETAILS به روز نمی شود زیرا اصلاح بر چندین جدول پایه تأثیر می گذارد.‘

بنابراین ، بیایید به سرعت عملکرد مشاهده را به روز کنیم ، علاوه بر این ، هر دو جدول را تحت تأثیر قرار می دهد ، و اگر با همان عبارت خطا روبرو شویم. سپس ، دستور Update ستون "Name" خود را از روی Table Tblemploye و ستون "DeptName" از جدول TBLDepartment تغییر می دهد. بنابراین ، وقتی این پرس و جو را اجرا می کنیم ، با همان خطا روبرو می شویم.

Update vWEmployeeDetails set Name = ‘Johny’, DeptName = ‘IT’ where >

بنابراین ، بیایید تغییراتی در بخش جان از HR به آن انجام دهیم. پرس و جو بروزرسانی فقط یک جدول را اجرا می کند و آن جدول TBLDepartment است. بنابراین ، پرس و جو ممکن است موفق شود. اما ، قبل از اجرای پرس و جو شرط وجود دارد ، لطفاً توجه داشته باشید که نام کارمندان جان و بن هر دو در بخش HR هستند.

Update vWEmployeeDetails set DeptName = ‘IT’ where >

پس از اجرای پرس و جو ، اکنون تمام سوابق داده را از عملکرد مشاهده انتخاب کنید و توجه داشته باشید که Ben'sDeptName نیز به آن تغییر کرده است. ما همچنین نام جان را تغییر می دهیم. بنابراین ، دستور بروزرسانی همانطور که انتظار داشتیم کار نکرد. چرا این اتفاق افتاد ، به دلیل دستور query به روزرسانی ، نام ستون به روز شده از HR به IT ، در جدول TBLDepartment. برای به روزرسانی ، ما باید از 3 به 1 دفع جان جان را تغییر دهیم.

مشاهده نادرست به روز شده

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

Before we create the trigger, let’s update the DeptName to HR for record with >

به روزرسانی tbldepartment set deptname = "HR" که در آن deptid = 3

اسکریپت برای ایجاد به جای به روزرسانی ماشه:

Now, let’s try to update department as “IT” and name “John”. Update vWEmployeeDetails set DeptName = ‘IT’ where >

پرس و جو به روزرسانی همانطور که انتظار می رود کار می کند. به جای به روزرسانی Trigger به درستی کار می کند ، و DeparyID John را به 1 در جدول TBLEMPLAYEE تغییر می دهد.

بنابراین ، بیایید سعی کنیم در نام ستون ها ، جنسیت و نام DeptName به روز شویم. یک پرس و جو به روزرسانی به درستی کار می کند اما خطایی به شما نمی دهد - ‘مشاهده یا عملکرد VWEMPLOYEEDETAILS به روز نمی شود زیرا اصلاح بر چندین جدول پایه تأثیر می گذارد."

بیایید به روزرسانی سریع در جدول Views "VWEMPLOYEEDETAILS" انجام دهیم

Update vWEmployeeDetails set Name = ‘Johny’, Gender = ‘Female’, DeptName = ‘IT’ where >

از این رو ، عملکرد به روزرسانی () استفاده شده در مثال فوق ، که نتیجه آن را "درست" می کند. فرقی نمی کند حتی با همان مقدار به روز شوید. به همین دلیل ، من به جای استفاده از عملکرد به روزرسانی () ، مقایسه مقادیر را با جداول درج شده و حذف شده توصیه می کنم.

به جای حذف ماشه

به جای Delete Trigger در حالت رویداد حذف روی یک میز یا یک نمای اخراج می شود. بیایید با یک مثال درک کنیم. بیایید فرض کنیم ، به جای حذف ماشه در یک نمای یا یک جدول ، و هنگامی که سعی می کنید یک ردیف واحد را از آن نمای یا جدول به روز کنید ، در حالت یک رویداد حذف واقعی ، سپس ماشه به طور خودکار اخراج می شود. به جای حذف محرک هایی که فقط برای حذف داده ها از نظر سوابق از نمای یا یک جدول استفاده می شود ، که بر اساس جدول های مختلف است.

بیایید دو میز کارمند و بخش ایجاد کنیم.

SQL Script برای ایجاد جدول Tblemployee:

ایجاد Table Tblemployee (ID INT KEY PRIMANY ، NAME NVARCHAR (30) ، جنسیت NVARCHAR (10) ، DEPARTIONID INT)

اسکریپت SQL برای ایجاد جدول tbldepartment

TBLDEPARTMENT TABLE (Deptid Int Primary Key ، Deptname Nvarchar (20))

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

اسکریپت برای ایجاد نمای:

ایجاد VWEMPLAYEDETAILS به عنوان شناسه ، نام ، جنسیت ، نام DeptName از TBLDEPARTMENT در TBLDPARTMENT در TBLEMENEE. DepartmentId = tblDepartment. DeptId

پس از اجرای این خط ، * * از VWEMPLOYEEDETAILS را انتخاب کنید ، تمام سوابق موجود در جدول را به شرح زیر بازیابی می کند.

در مثال بالا ، هنگامی که ما یک ردیف واحد را در جدول مشاهده قرار دادیم و یک عبارت خطای مانند- مشاهده یا عملکرد VWEMCAILEEDETAILS به روز نمی شود زیرا اصلاح بر چندین جدول پایه تأثیر می گذارد.‘

اگرچه ، هنگامی که ما سعی کردیم منظره ای را که بر اساس جدول های مختلف است به روز کنیم ، با همان خطا روبرو شدیم. برای به دست آوردن خطا ، هر دو میز پایه را تحت تأثیر قرار می دهد. اگر پرس و جو بروزرسانی فقط یک جدول پایه را تحت تأثیر قرار دهد ، ما خطا را دریافت نمی کنیم ، اما اگر ستون "DeptName" به روز شود ، پرس و جو به روز به درستی کار نمی کند.

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

Delete from vWEmployeeDetails where >

اسکریپت برای ایجاد به جای حذف ماشه:

ایجاد Trigger tr_vwemployeedetails_insteadofdelete on vwemployeedetails به جای حذف به عنوان شروع Delete Tblemployee از Tblemployee در Tblemployee. id = Deleted. ID حذف شده است.

–Delete از Tblemployee - ID ID IN (شناسه را از حذف انتخاب کنید) پایان

توجه: Trigger TR_VWEMPLAYEDETAILS_INSTEADOFDELETE قابل استفاده در جدول حذف شده است. اما جدول حذف شده شامل تمام ردیف هایی است که ما سعی کردیم از منظره حذف کنیم. بنابراین ، ما برای حذف ردیف های ناخواسته ، به جدول حذف شده با میز کار Timblemee می پیوندیم. در چنین مواردی ، پیوستن بسیار سریعتر از زیرمجموعه ها است.

هنگامی که دستور DELETE زیر را اجرا می کنید، ردیف همانطور که از جدول tblEmployee انتظار می رود، DELETED می شود.

Delete from vWEmployeeDetails where >

یک تفاوت کوچک بین محرک ها که در زیر نشان داده شده است.

DDL باعث می شود

تریگرهای DDL عملیاتی است که فقط در پاسخ به رویدادهای DDL اجرا می شود - CREATE، ALTER، و DROP (جدول، عملکرد، فهرست، رویه ذخیره شده) اینها دستورات تریگر DDL هستند یا می توانیم فقط دستورات DDL را در SQL بگوییم. رویه‌های ذخیره‌شده در سیستم، که عملیات DDL را انجام می‌دهند، همچنین می‌توانند تریگرهای DDL را در دستورات SQL اجرا کنند.

مثال – رویه ذخیره شده سیستم sp_rename.

چرا استفاده از DDL Triggers.

  • محرک هایی که برای بهبود یکپارچگی داده ها و مسئولیت پذیری پایگاه داده استفاده می شوند.
  • تریگرها فایل حسابرسی و ساختار جدول را در پایگاه داده حفظ می کنند.

نحو برای ایجاد تریگر DDL به شرح زیر است.

ایجاد TRIGGER [ Trigger_Name]

روشن [ دامنه (سرور | پایگاه داده)]

برای [EventType1، EventType2، EventType3،…]،

تریگرهای DDL را می توان در سرور پایگاه داده ایجاد کرد.

ماشه زیر در پاسخ به رویداد CREATE_TABLE DDL فعال می شود.

ایجاد محرک trMyFirstTrigger

چاپ "جدول جدید ایجاد شد"

چگونه بررسی کنیم که ماشه ایجاد شده است یا خیر؟

  1. "پنجره Object Explorer" خود را باز کنید، سپس با کلیک بر روی نماد مثبت در نزدیکی نام پوشه SampleDB، پایگاه داده "SampleDB" را بیشتر گسترش دهید.
  2. سپس، پوشه Programmability را گسترش دهید.
  3. در نهایت، پوشه Database Triggers را گسترش دهید. لطفاً به تصویر داده شده برای مرجع به شرح زیر نگاه کنید.

لطفاً توجه داشته باشید: اگر ماشه ای را که ایجاد کرده اید پیدا نکردید، پیشنهاد می کنم پوشه Database Triggers را بازخوانی کنید.

هنگامی که کد داده شده را برای ایجاد جدول اجرا می کنید، تریگر به طور خودکار فعال می شود و در عوض، پیغام ایجاد جدول جدید را چاپ می کند.

ایجاد آزمون جدول (ID int)

ماشه بالا فقط برای یک رویداد DDL که "ایجاد جدول" است فعال می شود. علاوه بر این، اگر می‌خواهید که این ماشه با چندین رویداد فعال شود، بیایید زمانی که جدول خود را در دستورات تغییر یا رها کردن قرار می‌دهید، مثالی را بفهمیم، سپس با استفاده از کاما به صورت زیر رویدادها را جدا کنید.

ALTER TRIGGER trMyFirstTrigger

برای CREATE_TABLE، ALTER_TABLE، DROP_TABLE

چاپ "جدولی به تازگی ایجاد، اصلاح یا حذف شده است"

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

DDL دوم محرک برخی از کد ها را به رویدادهای DDL انجام می دهند. بنابراین ، بیایید نمونه ای از نحوه نجات کاربران از ایجاد ، تغییر یا رها کردن جداول را بررسی کنیم. برای به دست آوردن این موضوع ، باید ماشه را مطابق شکل زیر اصلاح کنید.

برای ایجاد ، تغییر یا رها کردن یک جدول ، یا باید ماشه را غیرفعال یا حذف کنید. چگونه می توانیم این موضوع را بدست آوریم ، اجازه دهید پاسگاه های زیر را برای غیرفعال کردن و فعال کردن آن درک کنیم.

چگونه می توان ماشه را غیرفعال کرد؟

  • ابتدا پنجره Object Explorer خود را در گوشه سمت چپ صفحه پنجره خود باز کنید ، سپس بر روی Trigger کلیک راست کرده و گزینه "Disable" را از پوشه منوی Context انتخاب کنید.
  • علاوه بر این ، شما همچنین می توانید با استفاده از دستورات T-SQL مانند موارد زیر ، TrmyFirstTrigger را در پایگاه داده غیرفعال کنید.

چگونه می توان ماشه را فعال کرد؟

  • ابتدا پنجره Object Explorer خود را در گوشه سمت چپ صفحه پنجره خود باز کنید ، سپس بر روی Trigger کلیک راست کرده و گزینه "Enable" را از پوشه منوی Context انتخاب کنید.
  • علاوه بر این ، شما همچنین می توانید با استفاده از دستورات T-SQL مانند موارد زیر ، Tromger TrmyFirstTrigger را در پایگاه داده فعال کنید.

چگونه می توان ماشه را حذف کرد؟

  • ابتدا پنجره Object Explorer خود را در گوشه سمت چپ صفحه پنجره خود باز کنید ، سپس بر روی Trigger کلیک راست کرده و گزینه "Delete" را از پوشه منوی Context انتخاب کنید.
  • علاوه بر این ، شما همچنین می توانید با استفاده از دستورات T-SQL مانند موارد زیر TrmyFirstTrigger در پایگاه داده ، ماشه را حذف کنید

روشهای ذخیره شده سیستم که عملیات DDL را انجام می دهند نیز می توانند محرک های DDL را آتش بزنند. هنگامی که یک شیء پایگاه داده را با استفاده از نام روش "SP_RENAME" تغییر نام داد ، یک ماشه داده شده اخراج می شود. می توانید با استفاده از این پرس و جو ، خروجی خود را دریافت کنید.

در کد فوق ، که نام TestTable را به NewTestTable کاملاً تغییر می دهد. هنگامی که این کد را اجرا می کنید ، اجرا می شود و Trrenametable Trrenametable را آتش می گیرد. به همین دلیل ، اجازه دهید نگاهی به کد داده شده به شرح زیر بیندازیم.

sp_rename "testtable" ، "newtesttable"

در کد فوق ، که نام ستون "ID" را در NewTestTable به NewId تغییر می دهد. وقتی این کد را اجرا می کنید ، اجرا می شود و Trrenametable را به آتش می کشد. به همین دلیل ، اجازه دهید نگاهی به کد داده شده به شرح زیر بیندازیم.

sp_rename "newtesttable. id" ، "newid" ، "ستون"

ورود به سیستم

Logon Triggers عملیاتی است که فقط در پاسخ به یک رویداد ورود به سیستم به طور خودکار اجرا می شود. این محرک ها فقط پس از اتمام ورود به سیستم در مرحله تأیید اعتبار اخراج می شوند اما جلسه کاربر باید قبلاً برقرار شود. علاوه بر این ، شما در مورد اینکه چرا ما از محرک های ورود به سیستم استفاده می کنیم ، خواهید آموخت.

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

در زیر برخی موارد معنی دار در محرک های ورود به سیستم آورده شده است

  1. برای ردیابی فعالیت ورود به سیستم در پایگاه داده.
  2. برای محدود کردن اقتدار ورود به برنامه های SQL Server.
  3. برای محدود کردن تعداد جلسات برای یک ورود به سیستم خاص.

بیایید با یک مثال ماشه ورود به سیستم درک کنیم: Trigger محدودیت حداکثر تعداد اتصالات باز را با کاربر به 3 تعیین می کند.

در نتیجه ، پیام خطای Trigger مستقیماً به پنجره خطای ورود می رسد. سپس دستور داده شده را برای خواندن گزارش خطا اجرا کنید.

نتیجه

در این مقاله ، من انواع مختلفی از محرک ها مانند DDL ، DML و Logon را شرح دادم. حفظ محدودیت های یکپارچگی داده در پایگاه داده در غیاب کلیدهای محدودیت SQL (کلید اصلی و کلید خارجی) بسیار مفید است. Triggers ویژگی بسیار مفید SQL/T-SQL است و می توانید از آن در اوراکل نیز استفاده کنید.

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

یک تکنسین ، گوینده ، مربی ، نویسنده و یک تجسم داده Jedi. من وقتی می خواهم داشبورد داده و تجسم هایی را که کاربران و مشتری ها کاملاً دوست دارند ، برآورده می کنم. به اشتراک گذاشتن در مورد کارهایی که من از انجام آن لذت می برم سرگرمی من است ، خواه مربوط به یک پروژه ، همکاری ، بازخورد یا فقط نحوه راهنمایی در مورد تجسم باشد. اگر چیزی برای پرسیدن یا اشتراک گذاری دارید ، دوست دارم از شما بشنوم!

ثبت دیدگاه

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