PDA

View Full Version : عمل حذف در تریگر



Iran58
یک شنبه 20 مهر 1393, 13:15 عصر
باسلام
یک جدول داریم که می خواهیم عمل حذف را در آن انجام بدهیم
CREATE TABLE [dbo].[a](
[Id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) NULL,
[family] [nvarchar](10) NULL,
[age] [int] NULL,
CONSTRAINT [PK_a] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
مثلا family نام کاربر جاری را از سیستم می گیرد
حال می خواهم هر وقت عمل حذف را انجام دادم
نام کاربری که الان این عمل حذف را انجام می دهد ثبت شود در تریگر چون عمل حذف است family قبلی که در جدول وجود دارد ثبت می شود نه familyجاری که عمل حذف را دارد انجام می دهد
من sp زیر را نوشته ام اما دوبار (اول ویرایش وسپس حذف)را در جدول تریگر مورد نظر می اندازد من فق می خواهم یک عمل ثبت شود
alter proc tests
@Id int ,
@users nvarchar(50)
as
begin
declare @user nvarchar(50) ;
update a
set
a.family=@users
where Id=@Id
begin
delete a
where Id=@Id
end
end
ALTER TRIGGER [dbo].[TestDeleteTablea] ON [dbo].[a]
FOR DELETE
AS
declare @teId int;
declare @teName nvarchar(50);
declare @teFamily nvarchar(50);
declare @teAge int;
declare @teUpdateDateTime datetime;
declare @teMassege nvarchar(50);
select @teId=Id from deleted a;
select @teName=name from deleted a;
select @teFamily=family from deleted a;
select @teAge=age from deleted a;
select @teUpdateDateTime=GETDATE();
set @teMassege='D';
insert into [dbo].[Tema]
([Id],[Name],[Famliy],[Age],[DateUpdate],[Message])
values
(@teId,@teName,@teFamily,@teAge,@teUpdateDateTime, @teMassege);


ممنون می شوم راهنمای بفرمایید

khorsandreza
یک شنبه 20 مهر 1393, 18:39 عصر
شما بجای انکه دستورات را در تریگر بنویسی بصورت SP بنویس موقع انجام اینکار بهروی جدول مورد نظر سلکت کن
و نیاز نیست چند بار سلکت انجام بدی
همه اینها را با یک دستور اجرا کن

select @teId=Id from deleted a;
select @teName=name from deleted a;
select @teFamily=family from deleted a;
select @teAge=age from deleted a;

یعنی بشکل زیر

select @teId=Id,@teName=name,@teFamily=family,@teAge=age from deleted a;

pezhvakco
دوشنبه 21 مهر 1393, 10:26 صبح
ممنون می شوم راهنمای بفرمایید
چرا شما گیر دادین به این که باید با Trigger کار کنید .
وقتی همه درخواست های شما به هم پیوسته است و کنترل بیشتری هم با SP است چرا باید با Trigger کار بشود .