Sp_settriggerorder

Primi e Ultimi Trigger

Sergio Govoni

Qualora una tabella avesse molteplici trigger AFTER sullo stesso tipo di comando INSERT, UPDATE o DELETE, vi siete mai chiesti quale fosse l’ordine di attivazione?

Scenario

Ipotizziamo di utilizzare la tabella dbo.Product su cui insistono alcuni (tre) trigger AFTER di tipo INSERT. Con il seguente frammento di codice T-SQL eseguiamo il setup della tabella dbo.Product sul database di esempio AdventureWorks.

use [AdventureWorks];
go

-- Setup table dbo.Product
if OBJECT_ID('dbo.Product', 'U') is not null
  drop table dbo.Product;
go

create table dbo.Product
(
  ProductID varchar(25) not null
  ,LocationID varchar(20) not null
  ,Quantity decimal(9, 2) not null
  ,ModifiedDate date not null default getdate()
  ,Status bit not null default 1
  ,constraint PK_Product_ProductID_LocationID primary key(ProductID, LocationID)
);
go

Dopo aver definito la struttura della tabella dbo.Product eseguiamo la creazione dei trigger di tipo INSERT, per semplicità ogni trigger eseguirà il PRINT di un messaggio informativo che ci permetterà di analizzare l’ordine di attivazione.