Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

INSERT les valeurs supprimées dans une table avant DELETE avec un DELETE TRIGGER

Votre problème est :ce déclencheur se déclenche APRÈS la suppression a déjà eu lieu . Il n'y a donc plus de ligne dans HashTags sur lequel vous pourriez vous joindre !

Vous devez utiliser ce déclencheur à la place :

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

Le Deleted la pseudo table contient la ligne(s) entière(s) qui ont été supprimés - pas besoin de se joindre à quoi que ce soit...

Aussi:ce déclencheur se déclenche après la suppression - vous n'avez donc rien à faire vous-même, à l'intérieur du déclencheur - insérez simplement ces informations dans votre table d'archive - c'est tout. Tout le reste est géré par SQL Server pour vous.