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

SQL Server 2008 – při aktivaci vložení/aktualizace, která kopíruje hodnoty do jiné tabulky?

Docela jednoduché...

CREATE TRIGGER TRG_Tasks_UI ON Tasks FOR INSERT,UPDATE
AS
SET XACT_ABORT, NOCOUNT ON

--Ignore zero row updates, inserts
IF NOT EXISTS (SELECT * FROM INSERTED) RETURN;

BEGIN TRY
    INSERT TasksHistory
       (col1, col2, ...)
    SELECT
       I.*
    FROM
       INSERTED I
       LEFT JOIN
       DELETED D ON I.key = D.Key
    WHERE
       D.Key IS NULL --insert only
       OR -- need null handling here
       I.col1 <> D.col1 OR I.col2 <> D.col2 OR ...;
END TRY
BEGIN CATCH
   IF XACT_STATE() <> 0 ROLLBACK TRANSACTION
    RAISERROR [rethrow caught error using @ErrorNumber, @ErrorMessage, etc]
END CATCH
GO



  1. 2 způsoby, jak získat znakové sady dostupné v MariaDB

  2. Chyba při aktualizaci připojení

  3. Který záznam vybere GROUP BY v SQL

  4. Převeďte UPDATE na příkaz INSERT INTO ON DUPLICATE KEY UPDATE