PDA

View Full Version : غیر فعال کردن موقت Trigger



jalalnooritehrani
دوشنبه 13 آبان 1387, 14:28 عصر
من یک Trigger ساختم که هر وقت رکوردی وارد جدول شده مقدار آن را در یک جدول دیگر بریزد (برای عمل ریپلیکیشن)

ولی بعضی موقع ها میخواهم این عمل انجام نشه چه کار باید بکنم

MajerajooyeKhallagh
سه شنبه 14 آبان 1387, 07:42 صبح
دوست عزیز:
منظورتون از بعضی مواقع چیه؟اگر منظورتون تحت شرایط خاصی میباشد,شما میتونید با گذاشتن IF در تریگرتون اونو کنترل کنید.

nkhozooii
سه شنبه 14 آبان 1387, 09:05 صبح
من هم همين مشكل را دارم و از If استفاده كرده ام اما به نتيجه اي نرسيده ام. اين تريگر عمل delete را روي جدول AD انجام مي دهد و مي خواهم تنها در صورتي كه شرط
if( @id2 is null )
برقرار است اطلاعات جدول autosys هم حذف شود(جداول در دو db جداگانه قرار دارند) ولي اگر شرط برقرار نباشد انتظار داشتم كه فقط عمل حذف روي جدول AD انجام شود و روي autosys انجام نشود اما وقتي شرط برقرار نيست حذف در هيچ كدام از دو جدول انجام نمي شود. نمي دانم بايد چه كنم كه حذف فقط روي AD انجام شود . كد را ببينيد شايد جايي اش مشكل دارد شايد هم بايد از exception استفاده كنم كه طرز استفاده آن را هم نمي دانم.البته شايد هم نبايد از If استفاده كنم و تنها تريگر را هنگاميكه نبايد ركورد autosys حذف شود غير فعال كنم؟؟؟؟؟


CREATE TRIGGER [delTG] ON [dbo].[tblUser]
for delete
as
declare @username1 nvarchar, @id1 bigint,@id2 bigint
select @username1= [fldUsername] from deleted
select @id1 = [ID] from autosys.dbo.tblUser where [fldUsername] = @username1
if (@id1 is not null)
select @id2=[ID] from autosys.dbo.tblsection where [F_tblUser_ID]=@id1
if( @id2 is null )
begin
delete from autosys.dbo.tblUser where [fldUsername] =(select [fldUsername] from deleted)
end

Kamyar.Kimiyabeigi
سه شنبه 14 آبان 1387, 10:33 صبح
غير فعال كردن


ALTER TABLE TableName DISABLE TRIGGER TriggerName


فعال كردن


ALTER TABLE TableName ENABLE TRIGGER TriggerName