Description
INSTEAD OF DELETE trigger which keeps Vendors from being deleted.
Trigger properties
| name | value |
|---|
| parent | Vendor |
| type | Instead of Delete |
| is first insert | false |
| is last insert | false |
| is first update | false |
| is last update | false |
| is last delete | false |
| is first delete | false |
| is disabled | false |
| is not for replication | true |
Dependency graph
Objects that [Purchasing].[dVendor] depends on
| name | object type | database | server | level |
|---|
| uspLogError | stored procedure | AdventureWorks2008 | SPRING\KATMAI | 1 |
| uspPrintError | stored procedure | AdventureWorks2008 | SPRING\KATMAI | 2 |
| ErrorLog | table | AdventureWorks2008 | SPRING\KATMAI | 2 |
| Vendor | table | AdventureWorks2008 | SPRING\KATMAI | 1 |
| Name | type | AdventureWorks2008 | SPRING\KATMAI | 2 |
| Flag | type | AdventureWorks2008 | SPRING\KATMAI | 2 |
| AccountNumber | type | AdventureWorks2008 | SPRING\KATMAI | 2 |
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;