nkhozooii
دوشنبه 20 آبان 1387, 15:59 عصر
قبلا اين سوال را در تاپيكي كه در 14 آبان توسط يكي از دوستان ايجاد شده بود مطرح كردم اما هنوز به جواب نرسيده ام . تصميم گرفتم براي اين مشكل يك تاپيك جديد با عنوان مربوط به آن باز كنم. لطفا اين تاپيك را پاك نكنيد.
اين تريگر عمل delete را روي جدول AD انجام مي دهد و مي خواهم تنها در صورتي كه شرط
if( @id2 is null )
برقرار است اطلاعات جدول autosys هم حذف شود(جداول در دو db جداگانه قرار دارند) ولي اگر شرط برقرار نباشد انتظار داشتم كه فقط عمل حذف روي جدول AD انجام شود و روي autosys انجام نشود اما وقتي شرط برقرار نيست حذف در هيچ كدام از دو جدول انجام نمي شود. نمي دانم بايد چه كنم كه حذف فقط روي AD انجام شود . كد را ببينيد شايد جايي اش مشكل دارد شايد هم بايد از exception استفاده كنم كه طرز استفاده آن را هم نمي دانم؟؟؟
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
من بعدا به اين كد در قسمت پاييني آن يه دستور else هم اضافه كردم كه در صورتي كه حذف در جدول autosys ممكن نيست تريگر غير فعال شود اما باز كار نكرد. واقعا نمي دانم ديگه بايد چه كار كنم . لطفا راهنمايي كنيد.
اين تريگر عمل delete را روي جدول AD انجام مي دهد و مي خواهم تنها در صورتي كه شرط
if( @id2 is null )
برقرار است اطلاعات جدول autosys هم حذف شود(جداول در دو db جداگانه قرار دارند) ولي اگر شرط برقرار نباشد انتظار داشتم كه فقط عمل حذف روي جدول AD انجام شود و روي autosys انجام نشود اما وقتي شرط برقرار نيست حذف در هيچ كدام از دو جدول انجام نمي شود. نمي دانم بايد چه كنم كه حذف فقط روي AD انجام شود . كد را ببينيد شايد جايي اش مشكل دارد شايد هم بايد از exception استفاده كنم كه طرز استفاده آن را هم نمي دانم؟؟؟
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
من بعدا به اين كد در قسمت پاييني آن يه دستور else هم اضافه كردم كه در صورتي كه حذف در جدول autosys ممكن نيست تريگر غير فعال شود اما باز كار نكرد. واقعا نمي دانم ديگه بايد چه كار كنم . لطفا راهنمايي كنيد.