0

当删除表中的一行时,我正在使用触发器概念,同一行将被插入到另一个表中。现在的问题是我正在使用删除命令字段从网格视图中删除该行。当我删除该行时,我无法获取已删除行的值以使其存储在另一个表中。该行正在插入,但它都是空的。

现在我需要知道如何将已删除行中的值复制到另一个表中以进行插入。

尽快需要帮助

谢谢你。

这是触发器

不,这是我的触发功能。

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);
4

3 回答 3

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

没有必要变量

于 2012-08-18T09:01:56.500 回答
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
于 2012-08-18T10:10:54.080 回答
0

当您从 datagidview 中删除行时,将执行事件 UserDeletingRow。DataGridViewRowCancelEventArgs 为您提供正在删除的行。您可以从那里获取值以将它们放入表中。

于 2012-08-18T10:11:48.123 回答