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

Jak mogę edytować wartości INSERT w wyzwalaczu na SQL Server?

Użyj wyzwalacza po wstawieniu. Dołącz z inserted pseudotabela do Tb na kluczu podstawowym. Następnie zaktualizuj wartości desc. Coś w stylu:(ale może się nie skompilować)

CREATE TRIGGER TbFixTb_Trg 
ON  Tb  
AFTER INSERT 
AS  
BEGIN 
    UPDATE Tb
    SET DESC = SomeTransformationOf(i.DESC)
    FROM Tb
    INNER JOIN inserted i on i.Id = Tb.Id
END  
GO

Ten wyzwalacz ma miejsce po wstawieniu, ale przed insert oświadczenie się kończy. Tak więc nowe, nieprawidłowe wartości są już umieszczone w tabeli docelowej. Ten wyzwalacz nie będzie musiał się zmieniać, gdy kolumny są dodawane, usuwane itp.

Zastrzeżenie Ograniczenia integralności są wymuszane przed uruchomieniem wyzwalacza po. Nie można więc nałożyć ograniczenia sprawdzającego, aby wymusić właściwą formę DESC. Ponieważ spowodowałoby to niepowodzenie instrukcji, zanim wyzwalacz miałby szansę cokolwiek naprawić. (Proszę dokładnie sprawdzić ten akapit, zanim zaczniesz na nim polegać. Minęło trochę czasu, odkąd napisałem wyzwalacz.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak INTERSECT działa w SQL Server

  2. Jak skutecznie modelować dziedziczenie w bazie danych?

  3. SQL Server w systemie Linux

  4. Utwórz bazę danych SQL Server za pomocą Azure Data Studio

  5. Co to jest prosty program lub skrypt wiersza poleceń do tworzenia kopii zapasowych baz danych serwera SQL?