SqlServer实现类似Oracle的before触发器示例

前端之家收集整理的这篇文章主要介绍了SqlServer实现类似Oracle的before触发器示例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1. 插入数据前判断数据是否存在

sql;"> SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= alter TRIGGER CategoryExistTrigger ON ProductCategory instead of insert AS

declare @categoryName varchar(50);
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for trigger here
select @categoryName = CategoryName from inserted;
if exists(select from ProductCategory where CategoryName =@categoryName)
begin
print 'Category exists..'
end;
else
begin
insert into ProductCategory select
from inserted;
end;

END

2. 删除表中数据时需要先删除外键表的数据

sql;"> SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- ============================================= alter TRIGGER DeleteOrderTrigger ON OrderHeader instead of delete AS declare @OrderId varchar(50); BEGIN

SET NOCOUNT ON;
select @OrderId = OrderId from deleted;
delete from OrderLine where OrderId = @OrderId;

END
GO

猜你在找的MsSQL相关文章