کسی میتونه بگه تریگر در Sql Server چیست ؟ و کاربرد Trigger چی هست؟ لطفا اگر ممکنه مثال هم بزنید که دقیقا قابل درک باشه.
به طور خیلی ساده و خلاصه تریگرها یا Trigger قطعه ای از کدهای Sql می باشند که می توانند بعد از انجام یک عملیات و یا به جای یک عملیات اجرا شود و عملیات خاصی را انجام دهند. بنابراین به صورت کلی 2 نوع تریگر وجود دارد.
به طور کلی دو نوع Trigger در Sql Server وجود دارد.
تریگرها می توانند بعد یا به جای عملیات Delete، Update و یا Insert انجام شوند. پس می توان کل در مجموع 6 نوع تریگر وجود دارد.
اگر قصد دارید یک تریگر در Sql Server ایجاد کنید می توانید از طریق دستورات T-Sql زیر این کار را انجام دهید.
CREATE TRIGGER [schema_name.]trigger_name
ON table_name
AFTER {[INSERT],[UPDATE],[DELETE]}
[NOT FOR REPLICATION]
AS
{sql_statements}
در کد بالا در یک تریگر After ایجاد خواهد شد. ضمنا در جلوی واژه After باید نوع تریگر مشخص شود. (یکی از واژه های Insert یا Update یا Delete). در قسمت Sql_statement هم عملیاتی که قصد دارید بعد از Insert یا Update یا Delete انجام شود را قرار دهید.
خب برای درک بهتر تریگر و آشنایی بهتر با کاربرد تریگرها در Sql Server یک مثال انجام می دهم. فرض کنید جدولی دارید که می خواهید تاریخ آخرین ویرایش هر رکورد را نگهداری کنید. یعنی به عبارتی هر موقع ردیفی را ویرایش کردیم در یک ستون ساعت و تاریخ ویرایش را ثبت کنیم.
در ابتدا یک دیتابیس خالی به نام myDataBase در Sql Server ایجاد می کنیم. برای این کار فقط کافیه Sql Server رو باز کنید و دستور زیر را اجرا کنید.
Create DataBase MyDataBase
خب حالا یک جدول با فیلدهای زیر ایجاد می کنیم.
Create Table MyTable
(Id int Identity(1,1) primary key not null,FirstName varchar(50), Family varchar(150), ModifyDateTime DateTime Null)
همونطوری که می بینید این جدول دارای فیلدهای زیر می باشد.
خب حالا یک رکورد را در جدول MyTable ثبت می کنیم. با استفاده از دستور Insert این کار انجام می شود.
Insert Into MyTable (FirstName,Family) Values ('Ali','Yaraghy')
خب تا اینجای کار یک رکورد در جدول خود داریم. حال می خواهیم تریگری ایجاد کنیم که هر موقع هر ردیفی در این جدول ویرایش شد تاریخ و ساعت ویرایش در فیلد ModifyDateTime ذخیره شود. با استفاده از دستورات زیر یک تریگر روی جدول MyTable ایجاد می کنیم.
Create Trigger [dbo].[Trg_Update] On [dbo].[myTable]
After Update
As Begin
Update myTable Set ModifyDateTime = GETDATE()
Where myTable.id = (Select d.id from deleted d)
End
در دستورات بالا یک تریگر After Update ایجاد کردیم. یعنی هر وقت ویرایشی صورت بگیرد بعد از اتمام عملیات ویرایش دستورات تریگر اجرا می شود. و در بدنه تریگر هم فیلد ModifyDateTime را با تاریخ و ساعت روز مقدار دهی کردیم.
نکته : جدول deleted یک جدول Temp می باشد که به صورت پیش فرض در همه دیتابیس ها وجود دارد.
خب حالا اگر ویرایشی روی رکوردهای خودتون انجام بدید می بینید که مقدار ModifyDateTime هم پر میشه.
این مثال یکی از مثالهای ساده برای استفاده از تریگر می باشد.
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1400/08/02
- ساعت :
02:35:00 PM
- بازدید :
2563
- پاسخ :
1
|
تاریخ :
1403/01/15
- ساعت :
04:12:00 PM
- بازدید :
799
- پاسخ :
2
|
تاریخ :
1402/10/18
- ساعت :
10:45:00 PM
- بازدید :
705
- پاسخ :
2
|
تاریخ :
1402/08/18
- ساعت :
08:43:00 AM
- بازدید :
1311
- پاسخ :
0
|
تاریخ :
1402/08/16
- ساعت :
09:45:00 PM
- بازدید :
1037
- پاسخ :
1
|
تاریخ :
1402/06/27
- ساعت :
12:27:00 PM
- بازدید :
1459
- پاسخ :
2
|
تاریخ :
1402/06/25
- ساعت :
11:37:00 AM
- بازدید :
1041
- پاسخ :
1
|
تاریخ :
1402/06/18
- ساعت :
10:36:00 AM
- بازدید :
1752
- پاسخ :
2
|
تاریخ :
1399/06/01
- ساعت :
10:58:00 PM
- بازدید :
7553
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
58
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
98
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1348
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1157
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
595
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|