0

ソース テーブルで削除が発生するたびに履歴テーブルにレコードを挿入するトリガーを SQL Server 2005 で作成しました。レコードは挿入されていますが、ソース テーブルから削除されていません。

これが私のトリガーです:

CREATE TRIGGER TRG_EdiHistory 
ON  dbo.EDI10000 
INSTEAD OF DELETE
AS 
BEGIN
    SET NOCOUNT ON;

    SET IDENTITY_INSERT dbo.EDI10500 ON;

    INSERT INTO EDI10500(File_Id, Tp_Id, File_Name, File_Size, File_Data, Rec_Date, Content_Type, Update_Flag)
       SELECT 
          File_Id, Tp_Id, File_Name, File_Size, File_Data,
          Rec_Date, Content_Type, Update_Flag
       FROM 
          DELETED   
END
GO

INSTEAD OFテーブルにImageタイプ列が含まれているため、トリガーを使用する必要がありました。

なぜこれが起こっているのか、誰かが考えているならお願いします。

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

* アップデート *

CREATE TRIGGER TRG_EdiHistory 
ON  dbo.EDI10000 
INSTEAD OF DELETE
AS 
BEGIN
   SET NOCOUNT ON;

   SET IDENTITY_INSERT dbo.EDI10500 ON;

    INSERT INTO EDI10500 ([File_Id],Tp_Id,[File_Name],File_Size
                            ,File_Data,Rec_Date,Content_Type,Update_Flag)
    SELECT   [File_Id], Tp_Id, [File_Name], File_Size, File_Data,
          Rec_Date, Content_Type, Update_Flag
    FROM DELETED    

    DELETE FROM dbo.EDI10000
    WHERE EXISTS (SELECT 1 
                  FROM DELETED
                  WHERE [FILE_ID] = dbo.EDI10000.[File_Id])

END
GO
4

2 に答える 2

0

削除の代わりに、DELETE ステートメントの標準アクションを置き換えます。

http://technet.microsoft.com/en-us/library/ms191208(v=sql.105).aspx

本当にやりたいことを行う方法をここで見てください: SQL Server で削除前のトリガーを作成する方法?

于 2014-09-17T19:18:18.223 に答える