sql >> Database >  >> RDS >> Sqlserver

Hoe kan ik de waarden van een INSERT in een trigger op SQL Server bewerken?

Gebruik een trigger na het invoegen. Doe mee vanaf de inserted pseudo-tabel naar Tb op de primaire sleutel. Werk vervolgens de waarden van desc bij. Iets als:(maar kan niet compileren)

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

Deze trigger vindt plaats nadat het invoegen heeft plaatsgevonden, maar vóór insert verklaring is voltooid. De nieuwe, foutieve waarden zijn dus al in de doeltabel geplaatst. Deze trigger hoeft niet te worden gewijzigd omdat kolommen worden toegevoegd, verwijderd, enz.

Voorbehoud Integriteitsbeperkingen worden afgedwongen voordat de trigger wordt geactiveerd. U kunt dus geen controlebeperking opleggen om de juiste vorm van DESC af te dwingen. Omdat dat ertoe zou leiden dat de instructie mislukt voordat de trigger de kans krijgt om iets te repareren. (Controleer deze paragraaf alstublieft nog een keer voordat u erop vertrouwt. Het is een tijdje geleden dat ik een trigger heb geschreven.)



  1. selecteer 30 willekeurige rijen waarbij sombedrag =x

  2. Hoe unicode op te slaan in MySQL?

  3. C++ / mysql Connector - ongedefinieerde verwijzing naar get_driver_instance - heb de eenvoudige dingen al geprobeerd

  4. Wijzig het wachtwoord voor een SQL Server-aanmelding