sql >> Databasteknik >  >> RDS >> Sqlserver

Hur kan jag redigera värden för en INSERT i en trigger på SQL Server?

Använd en efterinsättningsavtryckare. Gå med från den inserted pseudotabell till Tb på primärnyckeln. Uppdatera sedan värdena för desc. Något som:(Men kanske inte kompilerar)

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

Denna utlösare sker efter att infogningen har skett, men före insert uttalandet slutförs. Så de nya, felaktiga värdena är redan placerade i måltabellen. Denna utlösare behöver inte ändras när kolumner läggs till, tas bort, etc.

Varning Integritetsbegränsningar upprätthålls före efterutlösarbränderna. Så du kan inte sätta på en kontrollbegränsning för att upprätthålla den korrekta formen av DESC. Eftersom det skulle få uttalandet att misslyckas innan utlösaren har en chans att fixa något. (Dubbelkolla det här stycket innan du litar på det. Det var ett tag sedan jag skrev en utlösare.)



  1. Wordpress uppdatera mysql-tabellen

  2. MySQL-lagrade procedurer använder dem eller inte för att använda dem

  3. Hur kan jag läsa värdet från mysql med PHP

  4. exportera mysql lista över tabeller från mysql till csv-fil med php