我正在使用触发器概念,当删除表中的一行时,同一行将被插入到另一个表中。现在问题是我正在使用删除命令字段从网格视图中删除该行。当我删除行时,我无法获取已删除行的值,使其存储在另一个表中。该行已插入,但全部为空。
现在我需要知道如何将已删除行中的值复制到另一个表中以便插入。
尽快寻求帮助
谢谢。
这是触发器
这不是我的触发功能。
CREATE TRIGGER tgrfortrash ON [dbo].[Proj_details]
AFTER DELETE
AS
declare @proj_id varchar(10);
declare @proj_name varchar(100);
declare @front_end varchar(15);
declare @back_end varchar(15);
declare @proj_path varchar(100);
select @proj_id=d.Proj_id from deleted d;
select @proj_name=d.Proj_name from deleted d;
select @front_end=d.Front_end from deleted d;
select @back_end=d.Back_end from deleted d;
insert into Trash_details
(Proj_id,Proj_name,Front_end,Back_end,Proj_path)
values(@proj_id,@proj_name,@front_end,@back_end,@proj_path);
答案 0 :(得分:1)
你可以在删除触发器时使魔术表起作用并获得整个删除的行
这是
的陈述SELECT * FROM deleted -- this statement in trigger return you deleted row
修改
为什么要为每个值使用变量,你可以像这样写
INSERT INTO Trash_details(Proj_id,Proj_name,Front_end,Back_end,Proj_path)
Select Proj_id,Proj_name,Front_end,Back_end,Proj_path From deleted
不需要变量
答案 1 :(得分:0)
您的触发器应该是这样的吗?这可以帮助您多个用户尝试删除
CREATE TRIGGER tgrfortrash ON [dbo].[Proj_details]
AFTER DELETE
AS
Begin Try
Set NoCount ON
Set Xact_Abort ON
Begin Tran
INSERT INTO Trash_details(Proj_id,Proj_name,Front_end,Back_end,Proj_path)
Select Proj_id,Proj_name,Front_end,Back_end,Proj_path From deleted
Commit Tran
End Try
Begin Catch
Rollback Tran
End Catch
答案 2 :(得分:0)
从datagidview中删除行时,将执行事件UserDeletingRow。 DataGridViewRowCancelEventArgs为您提供正在删除的行。您可以从那里获取值,将它们放在表格中。