0

テーブルの行が削除されたときにトリガーの概念を使用していますが、同じ行が別のテーブルに挿入されます。問題は、deleteコマンドフィールドを使用してグリッドビューから行を削除していることです。行を削除すると、削除した行の値を取得して別のテーブルに格納できませんでした。行は挿入されますが、すべて空です。

次に、削除された行から別のテーブルに値をコピーして挿入する方法を知る必要があります。

できるだけ早く助けが必要

ありがとうございました。

これがトリガーです

いいえ、これは私のトリガー機能です。

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 に答える