Alternative ai trigger

Creare e ottimizzare i trigger in SQL Server

Florin Angelescu

Instructor

Trigger vs stored procedure

Trigger

  • Scattano automaticamente su un evento
-- Attiverà un trigger di INSERT
INSERT INTO Orders [...];
  • Niente parametri o transazioni
  • Non possono restituire valori in output

Stored procedure

  • Eseguite solo se chiamate esplicitamente
-- Esegue la stored procedure
EXECUTE sp_DailyMaintenance;
  • Accettano parametri in input e transazioni
  • Possono restituire valori in output
Creare e ottimizzare i trigger in SQL Server

Trigger vs stored procedure

Trigger

Usati per:

  • auditing
  • enforcement dell’integrità

Stored procedure

Usate per:

  • attività generiche
  • esigenze specifiche utente
Creare e ottimizzare i trigger in SQL Server

Trigger vs colonne calcolate

Trigger

  • calcolare valori di colonne
  • usare colonne di altre tabelle nei calcoli
  • INSERT o UPDATE usati per calcolare
    -- Usato nel corpo del trigger
    [...]
    UPDATE
    SET TotalAmount = Price * Quantity
    [...]
    

Colonne calcolate

  • calcolare valori di colonne
  • usare colonne solo della stessa tabella nei calcoli
  • calcolo definito alla creazione della tabella
    -- Definizione della colonna
    [...]
    TotalAmount AS Price * Quantity
    [...]
    
Creare e ottimizzare i trigger in SQL Server

Esempio di colonna calcolata

CREATE TABLE [SalesWithPrice]
(
    [OrderID] INT IDENTITY(1,1),
    [Customer] NVARCHAR(50),
    [Product] NVARCHAR(50),
    [Price] DECIMAL(10,2),
    [Currency] NVARCHAR(3),
    [Quantity] INT,
    [OrderDate] DATE DEFAULT (GETDATE()),
    [TotalAmount] AS [Quantity] * [Price]
);
Creare e ottimizzare i trigger in SQL Server

Usare un trigger come colonna calcolata

CREATE TRIGGER [SalesCalculateTotalAmount]
ON [SalesWithoutPrice]
AFTER INSERT
AS
    UPDATE [sp]
    SET [sp].[TotalAmount] = [sp].[Quantity] * [p].[Price]
    FROM [SalesWithoutPrice] AS [sp]
    INNER JOIN [Products] AS [p] ON [sp].Product = [p].[Product]
    WHERE [sp].[TotalAmount] IS NULL;
Creare e ottimizzare i trigger in SQL Server

Confrontiamoli in pratica!

Creare e ottimizzare i trigger in SQL Server

Preparing Video For Download...