PDA

View Full Version : سوال: ثبت تعدای رکورد با تریگر



mahdidabaghi
جمعه 03 خرداد 1392, 11:00 صبح
سلام به دوستان عزیز
من یه تریگر واسه یکی از جداولم به صورت زیر نوشتم که کارش اینه وقتی رکورد یا رکوردهایی از این جدول حذف میشه اون رکورد یا رکوردها برن و توی یه تیبل دیگه (با همون مشخصات جدول اول) قرار بگیرن.
(یه جورایی همون بایگانی اطلاعات هست)
تریگر رو به صورت زیر نوشتم :

Create Trigger test On table1
For Delete
As
Declare @id int , @name nvarchar(30)
select @id=id , @name=name from deleted
insert into table2
values (@id , @name)
ولی اگر تعداد رکوردهایی که از جدول اول حذف میشن بیشتر از یکی باشه توی جدول دوم فقط یه رکورد ثبت میشه.در صورتی که من میخوام تمام رکورهای حذف شده از جدول اول توی جدول دوم ثبت بشن
ایا میشه با تریگر چنین کاری رو انجام داد؟
سپاسگزار میشم بنده رو راهنمایی بفرمایید

saeed_sho
جمعه 03 خرداد 1392, 12:06 عصر
فکر کنم بجای for delete باید از after delete استفاده کنید

fakhravari
جمعه 03 خرداد 1392, 12:46 عصر
به چه شکل 1 درج میکنه؟
کد delete بزار

mahdidabaghi
جمعه 03 خرداد 1392, 23:57 عصر
فکر کنم بجای for delete باید از after delete استفاده کنید
بابت تاخیرم عذر میخوام.عرضم به حضورت که این کار که شما فرمودین روهم انجام دادم ولی نشد ...

mahdidabaghi
جمعه 03 خرداد 1392, 23:59 عصر
به چه شکل 1 درج میکنه؟
کد delete بزار
کد delete همون کد آشنایی که همه با اون اشنایی داریم.
یعنی:

Delete From table 1
Where name=@name
البته میشهاین کار رو با Proc هم انجام داد.ولی میخواستم با Trigger پیادهسازی کنمش که تا بحال نتیجه ای نداده

fakhravari
شنبه 04 خرداد 1392, 11:29 صبح
گرفتم مشکل کجان.
روش کار میکنم نتیجه میگم.

mahdidabaghi
شنبه 04 خرداد 1392, 21:34 عصر
گرفتم مشکل کجان.
روش کار میکنم نتیجه میگم.
مرسی
البته من کد رو با پروسیجر اکی کردم ولی هنوز با تریگر نتونستم پیادش کنم...

kingmech
یک شنبه 05 خرداد 1392, 13:32 عصر
تا جایی که حضور ذهن دارم توی ترگیر امکان استفاده از شرط نیست

fakhravari
یک شنبه 05 خرداد 1392, 14:48 عصر
تا جایی که حضور ذهن دارم توی ترگیر امکان استفاده از شرط نیست
شوخی میکنید
http://barnamenevis.org/showthread.php?400202-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%AA%D8%B1%DB%8C%DA%AF%D8%B1-DELETE