PDA

View Full Version : مشكل در trigger



nkhozooii
دوشنبه 20 آبان 1387, 14: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 ممكن نيست تريگر غير فعال شود اما باز كار نكرد. واقعا نمي دانم ديگه بايد چه كار كنم . لطفا راهنمايي كنيد.

AminSobati
دوشنبه 20 آبان 1387, 19:25 عصر
آیا روی جدول tblUser در هر بار فقط یک رکورد حذف میشه یا ممکنه دستوری بیاد که چند رکورد رو تحت تاثیر قرار میده؟

nkhozooii
سه شنبه 21 آبان 1387, 15:05 عصر
نه. در tblUser هر بار فقط يك ركورد حذف مي شود و من مي خواهم اگر ركوردي در tbluser در ديتابيس AD حذف شد؛ معادل همان ركورد در tbluser در ديتابيس autosys هم حذف شود و اگر ركورد معادل در ديتابيس autosys به دليل relation ها قابل حذف نبود؛ آن ركورد حذف نشود ولي در هر دو صورت ( چه وقتي كه ركورد tbluser در ديتابيس autosys قابل حذف باشد يا نباشد) ركورد موجود در tbluser در ديتابيس AD حتما حذف شود.از راهنمايي تان ممنون مي شوم.

AminSobati
چهارشنبه 22 آبان 1387, 01:27 صبح
دوست عزیزم جنس nvarchar باید همراه با ظرفیتش باشه، مثلا nvarchar 50. فعلا این مشکل رو درست کنید شاید همین باعث میشه شرط Trigger ناقص عمل کنه

nkhozooii
چهارشنبه 22 آبان 1387, 08:06 صبح
مشكل حل شد. از راهنمايي تان بسيار سپاسگذارم.