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

Spouštěč aktualizace SQL pouze při změně sloupce

Pro vaši otázku máte dva způsoby:

1- Použijte Update Command ve vašem Triggeru.

ALTER TRIGGER [dbo].[tr_SCHEDULE_Modified]
   ON [dbo].[SCHEDULE]
   AFTER UPDATE
AS BEGIN
    SET NOCOUNT ON;
    IF UPDATE (QtyToRepair) 
    BEGIN
        UPDATE SCHEDULE 
        SET modified = GETDATE()
           , ModifiedUser = SUSER_NAME()
           , ModifiedHost = HOST_NAME()
        FROM SCHEDULE S INNER JOIN Inserted I 
        ON S.OrderNo = I.OrderNo and S.PartNumber = I.PartNumber
        WHERE S.QtyToRepair <> I.QtyToRepair
    END 
END

2- Použijte Spojit mezi vloženou tabulkou a odstraněnou tabulkou

ALTER TRIGGER [dbo].[tr_SCHEDULE_Modified]
   ON [dbo].[SCHEDULE]
   AFTER UPDATE
AS BEGIN
    SET NOCOUNT ON;    

    UPDATE SCHEDULE 
    SET modified = GETDATE()
       , ModifiedUser = SUSER_NAME()
       , ModifiedHost = HOST_NAME()
    FROM SCHEDULE S 
    INNER JOIN Inserted I ON S.OrderNo = I.OrderNo and S.PartNumber = I.PartNumber
    INNER JOIN Deleted D ON S.OrderNo = D.OrderNo and S.PartNumber = D.PartNumber                  
    WHERE S.QtyToRepair <> I.QtyToRepair
    AND D.QtyToRepair <> I.QtyToRepair
END

Při použití příkazu update pro tabulku SCHEDULE a nastavte QtyToRepair Sloupec na novou hodnotu, pokud se nová hodnota rovná staré hodnotě v jednom nebo více řádcích, řešení 1 aktualizuje všechny aktualizované řádky v tabulce Plán, ale řešení 2 aktualizuje pouze řádky plánu, jejichž stará hodnota se nerovná nové hodnotě.



  1. Špatné návyky:Počítání řádků obtížným způsobem

  2. AKTUALIZOVÁNO:Chyba způsobuje, že Microsoft Office 365 Build 2105 přerušuje přístupové aplikace

  3. ORA-01843 není platný měsíc - Porovnání dat

  4. Chyba poskytovatele pojmenovaných kanálů poskytovatele 40 nemohla otevřít připojení k chybě serveru SQL Server 2