sql >> Databáze >  >> RDS >> Sqlserver

Jak mohu upravit hodnoty INSERT ve spouštěči na SQL Server?

Použijte spoušť po vložení. Připojte se z inserted pseudo tabulky na Tb na primárním klíči. Poté aktualizujte hodnoty desc. Něco jako:(ale nemusí se zkompilovat)

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

Tento spouštěč nastane po vložení, ale před insert výpis dokončí. Takže nové, nesprávné hodnoty jsou již umístěny v cílové tabulce. Tento spouštěč se nebude muset měnit při přidávání, odstraňování atd.

Upozornění Omezení integrity jsou vynucena před spuštěním následného spouštěče. Nemůžete tedy zavést kontrolní omezení k vynucení správné formy DESC. Protože by to způsobilo selhání příkazu dříve, než by měl spouštěč šanci cokoliv opravit. (Překontrolujte si prosím tento odstavec, než se na něj spolehnete. Už je to nějaký čas, co jsem napsal spouštěč.)



  1. Jak vytvořit dotaz s dvojnásobným připojením k tabulce v Laravel 5.3?

  2. Jak ADDDATE() funguje v MariaDB

  3. Jak provést ladění sql v Oracle

  4. Použití výstrah a operátorů na serveru SQL