sql >> データベース >  >> RDS >> Sqlserver

DELETE TRIGGERを使用して、DELETEの前に削除された値をテーブルに挿入します。

    問題は次のとおりです。このトリガーはに起動します 削除はすでに行われています 。したがって、HashTagsにはこれ以上行がありません 参加できます!

    代わりにこのトリガーを使用する必要があります:

    ALTER TRIGGER [dbo].[HashTags_BeforeDelete]
        ON [dbo].[HashTags]
        FOR DELETE
    AS
      BEGIN
        INSERT INTO HashTagsArchive(Id, HashTagId, delete_date)
           SELECT 
               d.Id, d.HashTagId, GETUTCDATE() 
           FROM deleted d 
      END
    GO
    

    Deleted 疑似テーブルには、行全体が含まれています 削除されました-何にも参加する必要はありません...

    また、このトリガーは削除が行われた後に起動します-したがって、トリガー内で自分で何もする必要はありません-アーカイブテーブルにそれらの情報を挿入するだけです-それだけです。それ以外はすべてSQLServerによって処理されます。




    1. MySQL 17.6m行(1.2 GB)のフルテーブル更新が遅すぎる

    2. PHP/MySQLのマルチレベルメニュー

    3. print_r出力をデータベースに挿入しますか?

    4. すべてのユーザー定義(拡張機能関連ではない)関数を見つける方法は?