Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

INSERT изтрити стойности в таблица преди DELETE с DELETE TRIGGER

Вашият проблем е:този тригер задейства СЛЕД изтриването вече се е случило . Така че няма повече ред в 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 псевдо таблицата съдържа целите редове които бяха изтрити - няма нужда да се присъединявате към нищо...

Освен това:този тригер се задейства, след като изтриването се случи - така че не е необходимо да правите нищо сами, вътре в тригера - просто вмъкнете тези битове информация във вашата архивна таблица - това е всичко. Всичко останало се обработва от SQL Server вместо вас.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Кога трябва да използвам променлива на таблица срещу временна таблица в sql сървър?

  2. SQL Server:изберете най-новите редове, чиято сума съвпада със стойност

  3. SQL заявка за Chi-SQUARE TEST

  4. SSIS ForEach цикъл - промяна на връзката вътре в for цикъл

  5. CONCAT_WS() за SQL Server