Trigger para evitar duplicar albaranes en TREE

Cuando pasamos albaranes a TREE, deberían ser albaranes firmados por la persona que recepcionó el material, con lo que no deberían existir duplicados. Tras introducir un albarán en TREE deberíamos sellarlo.

Sin embargo, en ocasiones, un albarán puede acabar en administración dos veces, ya sea porque el que lo introdujo no lo selló, o porque el proveedor ha enviado el mismo albarán dos veces (faltaría la firma de aceptación en ese caso ¿no?).

Por ello, hay usuarios de TREE que piden una comprobación por proveedor y referencia, o por proveedor y fecha, o por cualquier otro criterio.

Con este TRIGGER de SQL puedes personalizar la comprobación cada vez que se introduzca un albarán en TREE (en este caso se comprueba proveedor y referencia no duplicado):

USE [TREE]
GO
/ Object: Trigger [dbo].[COMPROBAR_REFERENCIA] Script Date: 10/01/2018 17:41:19 /
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: STR                  Version: 2
-- Create date: 2020.04.27
-- Description: Comprobar REFERENCIA no duplicada
-- =============================================
CREATE TRIGGER [dbo].[COMPROBAR_REFERENCIA]
ON [dbo].[T_ALB_CAB]
AFTER INSERT
AS
IF EXISTS (SELECT C.REFERENCIA
FROM T_ALB_CAB AS C
JOIN T_ALB_CAB AS i ON I.EMPRESA=C.EMPRESA AND I.OBRA=C.OBRA AND I.PROVEEDOR=C.PROVEEDOR AND I.REFERENCIA=C.REFERENCIA AND I.REFERENCIA<>'TRASPASO')
BEGIN
SET NOCOUNT ON;
RAISERROR ('YA EXISTE LA REFERENCIA EN ESTE PROVEEDOR', 16, 1);
ROLLBACK TRANSACTION;
RETURN
END

Si en el futuro modificamos el TRIGGER, por ejemplo para cambiar de criterio, deberemos reemplazar CREATE por ALTER:

CREATE TRIGGER [dbo].[C..  -->   ALTER TRIGGER [dbo].[C..