Database reference - AdventureWorks

AdventureWorks -  triggers -  [Purchasing].[dVendor]

Description

INSTEAD OF DELETE trigger which keeps Vendors from being deleted. 

Trigger properties

namevalue
parentVendor
typeInstead of Delete   
is first insertfalse
is last insertfalse
is first updatefalse
is last updatefalse
is last deletefalse
is first deletefalse
is disabledfalse
is not for replicationtrue

Dependency graph

uspLogErroruspPrintErrorVendordVendor

Objects that [Purchasing].[dVendor] depends on

nameobject typelevel
uspLogErrorstored procedure1
uspPrintErrorstored procedure2
ErrorLogtable2
Vendortable1
Nametype2
Flagtype2
AccountNumbertype2

Code

CREATE TRIGGER [Purchasing].[dVendor] ON [Purchasing].[Vendor] 
INSTEAD OF DELETE NOT FOR REPLICATION AS 
BEGIN
    DECLARE @Count int;

    SET @Count = @@ROWCOUNT;
    IF @Count = 0 
        RETURN;

    SET NOCOUNT ON;

    BEGIN TRY
        DECLARE @DeleteCount int;

        SELECT @DeleteCount = COUNT(*) FROM deleted;
        IF @DeleteCount > 0 
        BEGIN
            RAISERROR
                (N'Vendors cannot be deleted. They can only be marked as not active.', -- Message
                10, -- Severity.
                1); -- State.

        -- Rollback any active or uncommittable transactions
            IF @@TRANCOUNT > 0
            BEGIN
                ROLLBACK TRANSACTION;
            END
        END;
    END TRY
    BEGIN CATCH
        EXECUTE [dbo].[uspPrintError];

        -- Rollback any active or uncommittable transactions before
        -- inserting information in the ErrorLog
        IF @@TRANCOUNT > 0
        BEGIN
            ROLLBACK TRANSACTION;
        END

        EXECUTE [dbo].[uspLogError];
    END CATCH;
END;

Powered by Yoyodyne © 1971