MSSQL事务的存储过程
在酒店管理系统开发中,我们会创建房间表和房间类型表(房型表)这两个表,如下图所示:
房型表:RoomType
房间表:Room
首先这两个表的关系:Room是从表,RoomType是主表,两表有主外键关系,RoomType.rTypeId=Room.rTypeId
分析这两个表,我们会发现这样一个问题:在房间表和房型表管理中,当我们修改或者删除一个RoomType表,对应的Room表我们也要做修改和删除,那么我们怎么解决这个问题呢?首先可以在数据库中设置级联删除,或者利用触发器也可以解决、、、这些方法都有一定的弊端,在实际开发中,我们会采取使用事务来解决这个问题,这种方法简单而且开发效率高,容易维护。
要求:在删除RoomType的同时把Room表中存在该房型的也删除.
思路:在删除RooType的时候,我们通过RoomType.rTypeId=Room.rTypeId找到Room中存在该房型的记录,把也它删掉。
说明:删除不是把整条记录从数据库删除,是将数据标识改为1,0是代表未删除。
下面介绍删除的存储过程:
代码:
ALTER procedure [dbo].[usp_DelToomType] 创建删除房型的存储过程
@rTypeId int 房型参数
as
begin transaction 开始事务
declare @error int 定义一个变量标识错误号
update RoomType set rTypeIsDel=1 where rTypeId=@rTypeId 根据条件删除房型,rTypeIsDel=1标识删除,0标识未删除
set @error+=@@ERROR
if(@error 0) 不等于0说明这一句执行出现错误
rollback transaction 事务回滚
update Room set roomIsDel=1 where rTypeId=@rTypeId 根据条件删除房间
set @error+=@@ERROR
if(@error 0) 不等于0说明这一句执行出现错误
rollback transaction 事务回滚
else
commit transaction 提交事务
最后,数据层直接调用存储过程的方法即可完成删除房型的同时把存在该房型的房间也删除。
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 MSSQL事务的存储过程
相关文章
- 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
- SQLServer 错误 41333 以下事务必须能够在快照隔离下访问内存优化表和本机编译的存储过程:RepeatableRead 事务、可串行事务以及访问在 RepeatableRead 或可串行隔离中未进行内存优化的表的事务。 故障 处理 修复 支持远程
- SQLServer存储过程中事务的使用方法
- 详解MySQL中的存储过程和函数
- MySql中innodb存储引擎事务日志详解数据库
- Redis实现快速存储Map(redis存map)
- MySQL: 超越事务存储的极致(mysql存储事务)
- Redis与Jedis:让数据更高效存储(redis与jedis)
- Oracle存储过程恢复:一步一步重建(oracle存储过程恢复)
- MySQL存储过程调用指南(mysqlcall)
- MySQL中存储的二进制数据分析(mysql二进制数据)
- 利用MSSQL存储过程创建数据库应用(mssql存储过程创建)
- 百度新推出的MSSQL数据库 破解中小企业存储瓶颈(百度mssql)
- Redis与MSSQL在数据存储中的比较(redis与mssql)
- 处理使用MSSQL实现跨数据库事务处理(mssql 跨数据事务)
- MSSQL数据类型实现数据存储的全面解析(mssql 类型)
- 中存储过程使用MSSQL查询当前数据库中的存储过程(mssql 查询当前库)
- 安全放置登录信息存储于 Redis(登入信息放到redis)
- sqlserver存储过程带事务拼接id返回值
- MSSQL事务的存储过程
- 浅析SQLServer中包含事务的存储过程