SQL存储过程:删除基础资料前逻辑判断,检查是否有关联业务数据
SQL存储过程:删除基础资料前逻辑判断,检查是否有关联业务数据我们设计的业务系统,在删除基础资料(比如:客户资料、用户资料)前必须检查当前用户或客户是否关联业务数据、当前用户是否创建业务数据,若有关联业务数据是不可删除的,避免产生无效数据。
以下提供存储过程仅供参考。
删除客户资料存储过程:
SQL Code:
ALTER PROCEDURE [dbo].[usp_DeleteCustomer]
@CustomerID VARCHAR(30)--客户编码
AS
BEGIN
/************************************************************
功能:删除客户
SELECT * FROM dbo.tb_Customer
SELECT * FROM dbo.tb_OrderDetail
usp_DeleteCustomer 'admin'
usp_DeleteCustomer 'C-000003'
*************************************************************/
DECLARE @Count INT
SELECT @Count=0;
--检查业务关联
SELECT @Count=@Count+COUNT(1) FROM dbo.tb_OrderDetail WHERE CustomerId=@CustomerID
SELECT @Count=@Count+COUNT(1) FROM dbo.tb_GoodsDownDtl WHERE CustomerId=@CustomerID
SELECT @Count=@Count+COUNT(1) FROM dbo.tb_GoodsUpDtl WHERE CustomerId=@CustomerID
IF @Count>0
BEGIN
SELECT 0 AS Result,'当前客户关联业务数据,不可删除!' AS ErrMsg;
RETURN;
END ELSE
BEGIN
--删除客户资料
DELETE FROM tb_Customer WHERE CustomerID=@CustomerID
SELECT 1 AS Result,NULL AS ErrMsg;
END;
END
//来源:C/S框架网 | www.csframework.com | QQ:23404761
@CustomerID VARCHAR(30)--客户编码
AS
BEGIN
/************************************************************
功能:删除客户
SELECT * FROM dbo.tb_Customer
SELECT * FROM dbo.tb_OrderDetail
usp_DeleteCustomer 'admin'
usp_DeleteCustomer 'C-000003'
*************************************************************/
DECLARE @Count INT
SELECT @Count=0;
--检查业务关联
SELECT @Count=@Count+COUNT(1) FROM dbo.tb_OrderDetail WHERE CustomerId=@CustomerID
SELECT @Count=@Count+COUNT(1) FROM dbo.tb_GoodsDownDtl WHERE CustomerId=@CustomerID
SELECT @Count=@Count+COUNT(1) FROM dbo.tb_GoodsUpDtl WHERE CustomerId=@CustomerID
IF @Count>0
BEGIN
SELECT 0 AS Result,'当前客户关联业务数据,不可删除!' AS ErrMsg;
RETURN;
END ELSE
BEGIN
--删除客户资料
DELETE FROM tb_Customer WHERE CustomerID=@CustomerID
SELECT 1 AS Result,NULL AS ErrMsg;
END;
END
//来源:C/S框架网 | www.csframework.com | QQ:23404761
SQL Code:
ALTER PROCEDURE [dbo].[usp_DeleteEmployee]
@EmpID VARCHAR(30)--员工编码
AS
BEGIN
/************************************************************
功能:删除员工资料
SELECT * FROM dbo.tb_Employee
SELECT * FROM dbo.tb_GoodsDownDtl
usp_DeleteEmployee 'admin'
usp_DeleteEmployee 'E-000003'
usp_DeleteEmployee 'E-000012'
*************************************************************/
DECLARE @Count INT
SELECT @Count=0;
--检查业务关联
SELECT @Count=@Count+COUNT(1) FROM dbo.tb_GoodsDownDtl WHERE EmPId=@EmpID
SELECT @Count=@Count+COUNT(1) FROM dbo.tb_GoodsUpDtl WHERE EmPId=@EmpID
IF @Count>0
BEGIN
SELECT 0 AS Result,'当前员工关联业务数据,不可删除!' AS ErrMsg;
RETURN;
END ELSE
BEGIN
--删除客户资料
DELETE FROM tb_Employee WHERE EmpID=@EmpID
SELECT 1 AS Result,NULL AS ErrMsg;
END;
END
//来源:C/S框架网 | www.csframework.com | QQ:23404761
@EmpID VARCHAR(30)--员工编码
AS
BEGIN
/************************************************************
功能:删除员工资料
SELECT * FROM dbo.tb_Employee
SELECT * FROM dbo.tb_GoodsDownDtl
usp_DeleteEmployee 'admin'
usp_DeleteEmployee 'E-000003'
usp_DeleteEmployee 'E-000012'
*************************************************************/
DECLARE @Count INT
SELECT @Count=0;
--检查业务关联
SELECT @Count=@Count+COUNT(1) FROM dbo.tb_GoodsDownDtl WHERE EmPId=@EmpID
SELECT @Count=@Count+COUNT(1) FROM dbo.tb_GoodsUpDtl WHERE EmPId=@EmpID
IF @Count>0
BEGIN
SELECT 0 AS Result,'当前员工关联业务数据,不可删除!' AS ErrMsg;
RETURN;
END ELSE
BEGIN
--删除客户资料
DELETE FROM tb_Employee WHERE EmpID=@EmpID
SELECT 1 AS Result,NULL AS ErrMsg;
END;
END
//来源:C/S框架网 | www.csframework.com | QQ:23404761

参考文档:
使用EF+Linq或Sql存储过程获取报表数据优缺点分析|C/S开发框架
SQL获取数据库中所有用户自定义存储过程、函数、触发器|C/S开发框架
MSSQL 查询所有用户自定义存储过程和自定义函数
SQL备份数据库存储过程:p_BackupDB
SQL脚本获取SQLServer数据库目录存储过程:f_GetDBPath
SQL Server 存储过程详解
SQL存储过程获取拼音助记码
平台内所有的SQL都用存储过程?
CSFramework.EF.PostgreSql数据库组件 PostgreSql数据库测试报告|C/S开发框架
SqlServer自动备份计划,备份多个数据库,自动删除备份文件|C/S开发框架
CSFrameworkV6软件开发框架 | MySql数据库测试报告|C/S开发框架
CSFrameworkV6快速开发框架 | SqlServer(MsSql)数据库测试报告|C/S开发框架
C#.NET调用达梦数据库的存储过程返回多张表|C/S开发框架
C#.NET 达梦数据库存储过程 获取OUT参数返回值|C/S开发框架
Oracle数据库元数据查询(数据库、表结构、存储过程)|C/S开发框架
MySql数据库连接字符串(ConnectionString)配置参数大全|C/S开发框架
使用EF+Linq或Sql存储过程获取报表数据优缺点分析|C/S开发框架
SQL获取数据库中所有用户自定义存储过程、函数、触发器|C/S开发框架
MSSQL 查询所有用户自定义存储过程和自定义函数
SQL备份数据库存储过程:p_BackupDB
SQL脚本获取SQLServer数据库目录存储过程:f_GetDBPath
SQL Server 存储过程详解
SQL存储过程获取拼音助记码
平台内所有的SQL都用存储过程?
CSFramework.EF.PostgreSql数据库组件 PostgreSql数据库测试报告|C/S开发框架
SqlServer自动备份计划,备份多个数据库,自动删除备份文件|C/S开发框架
CSFrameworkV6软件开发框架 | MySql数据库测试报告|C/S开发框架
CSFrameworkV6快速开发框架 | SqlServer(MsSql)数据库测试报告|C/S开发框架
C#.NET调用达梦数据库的存储过程返回多张表|C/S开发框架
C#.NET 达梦数据库存储过程 获取OUT参数返回值|C/S开发框架
Oracle数据库元数据查询(数据库、表结构、存储过程)|C/S开发框架
MySql数据库连接字符串(ConnectionString)配置参数大全|C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
