خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


استفاده از After Trigger در SQL Server

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

نرم افزار سامانه مودیان راهکار
Syntax ایجاد After Trigger به صورت زیر می باشد:



CREATE TRIGGER triggername

ON { tablename }

AFTER {[INSERT] [,] [UPDATE] [,] [DELETE] }

AS

{ ---sqlstatements }


در اسکریپت زیر از After trigger برای پیگیری و ردیابی رکوردها هنگام رخ دادن یک دستور خاص مانند insert، update، Delete در جدول employee استفاده می کند.

CREATE TRIGGER trg_Employees_track
ON Employees
AFTER INSERT ,DELETE
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO emplpyee_track( EmpId, LastName, FirstName, city, record_status, Date
)
SELECT i.EmployeeId, LastName, FirstName, city, 'inserted' as reocrd_status , GETDATE()
FROM
inserted i

UNION ALL

SELECT d.EmployeeId, LastName, FirstName, city, 'deleted' as reocrd_status , GETDATE()
FROM
deleted d;
END


استفاده از After Trigger در SQL Server
خب، تریگر مورد نظر را ایجاد کردیم و حالا به سراغ تست آن می رویم.
حالا تریگر مربوطه را با اضافه کردن رکورد جدید به جدول employees چک می کنیم.

Insert into Employees ( LastName, FirstName, city) values
('Anthony' ,'Mark','Denmark')

استفاده از After Trigger در SQL Server
select EmployeeId, LastName, FirstName, city from Employees
Select * from emplpyee_track

استفاده از After Trigger در SQL Server
همانطور که مشاهده می کنید، پس از افزودن یک رکورد جدید به جدول employee، یک after trigger به محض اجرای دستور Insert فعال شده و یک رکورد مانند همان رکوردهایی که در insert بوده را به جدول emplpyee_track بوده اضافه کرد.
حالا تریگری که ایجاد کردیم را برای دستور delete چک می کنیم.

delete from Employees where EmployeeID =1011

استفاده از After Trigger در SQL Server
select EmployeeId, LastName, FirstName, city from Employees
Select * from emplpyee_track

استفاده از After Trigger در SQL Server
همانطور که مشاهده می کنید، زمانی که رکورد مربوطه از جدول employee حذف شد یک تریگر After پس از اجرای فرمان Delete اجرا شده و یک رکورد جدید با عنوان Delete به emplpyee_track اضافه می کند.
حالا همین تریگر را در مورد ویرایش رکورد بررسی می کنیم. برای این منظور باید در مورد ویرایش هم اصلاحاتی در تریگر مربوطه انجام دهیم چون برای Update، اسکریپتی در تریگر ایجاد نکرده بودیم.

ALTER TRIGGER trg_Employees_track
ON Employees AFTER INSERT,UPDATE ,DELETE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @deletedcnt INT ,@insertedcnt INT
SELECT @deletedcnt = COUNT(1) FROM deleted
SELECT @insertedcnt = COUNT(1) FROM inserted

IF(@deletedcnt & @insertedcnt > 0)
BEGIN

INSERT INTO emplpyee_track( EmpId, LastName, FirstName, city, record_status, Date )
SELECT i.EmployeeId, LastName, FirstName, city, 'updated' as reocrd_status, GETDATE()
FROM inserted i

END

ELSE IF (@deletedcnt >0)

BEGIN
INSERT INTO emplpyee_track( EmpId, LastName, FirstName, city, record_status, Date
)
SELECT d.EmployeeId, LastName, FirstName, city,'deleted' as reocrd_status, GETDATE()
FROM deleted d;
END

ELSE
BEGIN
INSERT INTO emplpyee_track( EmpId, LastName, FirstName, city, record_status, Date )
SELECT i.EmployeeId, LastName, FirstName, city, 'inserted' as reocrd_status, GETDATE()
FROM inserted i
END
END

استفاده از After Trigger در SQL Server
استفاده از After Trigger در SQL Server
حالا تریگر فوق را در زمان آپدیت رکورد از جدول employee بررسی می کنیم.

Update employees set lastName ='Anthony S' where EmployeeId =8

استفاده از After Trigger در SQL Server
select EmployeeId, LastName, FirstName, city from Employees
Select * from emplpyee_track

استفاده از After Trigger در SQL Server
همانطور که مشاهده می کنید ، هنگامی که رکورد در جدول emplpyee آپدیت می شود، مانند مواردی که تا به الان مشاهده کردید، رکورد جدیدی را در خصوص این ویرایش به emplpyee_track اضافه می کند.


نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز