PDA

View Full Version : ساخت یه تریگر برای Delete !



merlin_vista
سه شنبه 23 بهمن 1386, 20:00 عصر
آقا من چه طوری یه تریگر بنویسم که اگه اطلاعاتی از جدول A پاک شد همان اطلاعات در جدول B بشینه :متفکر: هر کدی نوشتم نشد میشه یه نمونه بگزارید که تست شده باشه آخه وقت ندارم :گریه:

حمیدرضاصادقیان
سه شنبه 23 بهمن 1386, 20:45 عصر
به این شکل باید بنویسی.


Create Trigger Tru_RD_Table1 On Table1 after delete
as
Insert into table2
select * from deleted
go

merlin_vista
چهارشنبه 24 بهمن 1386, 13:26 عصر
آقا من از کد شما استفاده کردم و لی این پیغام را بعد از حذف سطر میده و هیچ کاری نمیکنه :افسرده:


ALTER TRIGGER TriggerDelete
ON dbo.Sell
FOR Delete
AS

Insert into ArchiveSll
select * from deleted

حمیدرضاصادقیان
چهارشنبه 24 بهمن 1386, 15:12 عصر
شما به جای For از after استفاده کن.یعنی باید بنویسی after delete . چون وقتی for به کار میبری هنوز ردیفی حذف نشده.

merlin_vista
چهارشنبه 24 بهمن 1386, 17:14 عصر
آقا این پیغام را داد :ناراحت:

حمیدرضاصادقیان
چهارشنبه 24 بهمن 1386, 22:57 عصر
سلام .احتمالا بعضی از ستونهای شما text,ntext یا image هست و اونها رو نمیتونه استفاده کنه. ببین اگر اینطوریه فکر کنم باید type مقادیر رو با دستو convert تغییر بدی.

merlin_vista
چهارشنبه 24 بهمن 1386, 23:01 عصر
میشه یه مثال بزنی !

merlin_vista
پنج شنبه 25 بهمن 1386, 20:41 عصر
همچنان منتظر هستم !

MAsp.Net
شنبه 27 بهمن 1386, 16:05 عصر
سلام می توانید از Cast هم استفاده کنی.
به صورت زیر:



Insert Into Table(Code,Name)
Select Code,Cast(Name As nvarchar(250)) From Deleted


در این مثال فرض شده که فیلد نام از نوع TEXT هست.
موفق باشید.

pesar irooni
شنبه 27 بهمن 1386, 19:43 عصر
سلام دوست عزیز
تو sql جدولی موقتی به نام deleted هست که زمانی که سطری رو حذف می کنیم اون سطر داخل این جدول ذخیره میشه
شما با تریگر زیر که نوشتم می تونید هنگامی که یه سطر از جدول (جدولی که من فرض کردم دو ستون آی دی و نام داره)حذف میشه به جدول دیگه اضافه کنید.
البته این تریگر برای زمانیه که از جدول یک سطر یک سطر حذف میشه . مثلا اگر 10 سطر باهم حذف بشه رو تست نکردم
البته تریگر دوستان دیگه صحیح تره



CREATE TRIGGER tr_afterdelete ON sourceTable
FOR DELETE
AS
DECLARE @i smallint, @nam nvarchar(50)
select @i=[id],@nam=[name] from deleted
insert into destinationTable values(@i,@nam)