sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan kan jeg redigere værdier af en INSERT i en trigger på SQL Server?

Brug en efterindsættelsesudløser. Deltag fra den inserted pseudo-tabel til Tb på den primære nøgle. Opdater derefter værdierne for desc. Noget som:(Men kompilerer muligvis ikke)

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

Denne trigger sker efter indsættelsen er sket, men før insert erklæring afsluttes. Så de nye, forkerte værdier er allerede placeret i måltabellen. Denne udløser skal ikke ændres, når kolonner tilføjes, slettes osv.

Advarsel Integritetsbegrænsninger håndhæves før efterudløsningsbrandene. Så du kan ikke påføre en kontrolbegrænsning for at håndhæve den korrekte form for DESC. Fordi det ville få erklæringen til at mislykkes, før triggeren har en chance for at rette noget. (Dobbelttjek venligst dette afsnit, før du stoler på det. Det er et stykke tid siden, jeg har skrevet en trigger.)



  1. Anonymisering af indirekte identifikatorer for at sænke risikoen for gen-ID

  2. Sådan kontrolleres om en tabel findes i et givet skema

  3. PostgreSQL 11:Patch-anmeldere til partitionering af patches

  4. Oracle indsæt, hvis række ikke eksisterer