Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

INSERT valores excluídos em uma tabela antes de DELETE com um DELETE TRIGGER


Seu problema é:este acionador é acionado DEPOIS a exclusão já aconteceu . Portanto, não há mais linha em HashTags em que você pode participar!

Você precisa usar este gatilho em vez disso:
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

O Deleted pseudo tabela contém as linhas inteiras que foram excluídos - não há necessidade de participar de nada ...

Além disso:esse gatilho é acionado após a exclusão - então você não precisa fazer nada sozinho, dentro do gatilho - basta inserir esses bits de informação em sua tabela de arquivo - isso é tudo. Todo o resto é tratado pelo SQL Server para você.