前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用触发器控制用户删除业务往来中使用的基础资料

使用触发器控制用户删除业务往来中使用的基础资料

作者头像
跟着阿笨一起玩NET
发布2018-09-18 15:43:08
4130
发布2018-09-18 15:43:08
举报
文章被收录于专栏:跟着阿笨一起玩NET

本文转载:http://www.csframework.com/archive/1/arc-1-20120526-1945.htm

比如说货品资料,如果这个货品有了业务上的往来,比如采购和销售单使用该货品,在基础资料就不能删除该货品,这样的约束如何实现?

有下面两种常见处理方式:

1. 在DAL层的Delete方法中控制,删除前查询业务往来表,如果有使用该基础资料就抛出异常终止删除。

2. 使用DELETE触发器实现。

3. 使用主外键约束

下面是使用触发器实现的代码:

ALTER TRIGGER trg_DropProduct

ON dbo.tb_Product AFTER DELETE

AS

BEGIN

/*********************************************************************************

货品资料删除触发器,by www.csframework.com

--------------------------------------------------

SELECT * FROM tb_Product

SELECT * FROM dbo.tb_IAs

INSERT INTO tb_Product(ProductCode) VALUES ('BBX')

DELETE tb_Product WHERE ProductCode='BBX'

DELETE tb_Product WHERE ProductCode='XX'

DELETE tb_Product WHERE ProductCode='cpu'

**********************************************************************************/

DECLARE @ProductCode VARCHAR(20),@MSG NVARCHAR(200)

SELECT @ProductCode=ProductCode FROM DELETED

SELECT @ProductCode=ISNULL(@ProductCode,'')

SELECT @MSG='该货品在业务往来表中使用,不可以删除!'

IF EXISTS(SELECT * FROM dbo.tb_IAs WHERE ProductCode=@ProductCode) GOTO ERR --检查库存调整

IF EXISTS(SELECT * FROM dbo.tb_ICs WHERE ProductCode=@ProductCode) GOTO ERR --检查库存盘点

IF EXISTS(SELECT * FROM dbo.tb_INs WHERE ProductCode=@ProductCode) GOTO ERR --检查入库

IF EXISTS(SELECT * FROM dbo.tb_IOs WHERE ProductCode=@ProductCode) GOTO ERR --检查出库

IF EXISTS(SELECT * FROM dbo.tb_POs WHERE ProductCode=@ProductCode) GOTO ERR --检查采购订单

IF EXISTS(SELECT * FROM dbo.tb_SOs WHERE StockCode  =@ProductCode) GOTO ERR --检查销售订单

GOTO FINISHED

--标签:业务往来中使用该货品

ERR:

ROLLBACK TRANSACTION

RAISERROR(@MSG,10,1)

--事务完成标签:不做任何处理

FINISHED:

END

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-01-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档