Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

WSTAW usunięte wartości do tabeli przed DELETE za pomocą DELETE TRIGGER

Twój problem polega na tym, że ten wyzwalacz uruchamia się PO usunięcie już się wydarzyło . Więc nie ma więcej wiersza w HashTags do którego możesz dołączyć!

Zamiast tego musisz użyć tego wyzwalacza:

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 pseudotabela zawiera całe wiersze które zostały usunięte - nie ma potrzeby dołączania do niczego...

Ponadto:ten wyzwalacz uruchamia się po usunięciu — więc nie musisz nic robić samodzielnie, wewnątrz wyzwalacza — po prostu wstaw te bity informacji do tabeli archiwum — to wszystko. Wszystko inne jest obsługiwane przez SQL Server za Ciebie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 sposoby uzyskania etapów zadania zadania agenta serwera SQL (T-SQL)

  2. Zapytanie o liczbę rekordów w każdej tabeli w bazie danych

  3. MVC3 — uwierzytelnianie za pomocą kont programu SQL Server

  4. błąd w instrukcjach Multiple Select w instrukcji Insert

  5. Nie udało się zaktualizować bazy danych .mdf, ponieważ baza danych jest tylko do odczytu (aplikacja Windows)