Iran58
یک شنبه 20 مهر 1393, 12: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);
ممنون می شوم راهنمای بفرمایید
یک جدول داریم که می خواهیم عمل حذف را در آن انجام بدهیم
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);
ممنون می شوم راهنمای بفرمایید