在酒店管理系统开发中,我们会创建房间表和房间类型表(房型表)这两个表,如下图所示:

房型表: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 --提交事务

更多相关文章

  1. [置顶] android 批量插入数据
  2. Android性能优化-SQLite数据库
  3. 我的android 第16天 - SQLite数据库
  4. Android(安卓)FragmentManage FragmentTransaction介绍
  5. 第15天android:使用sqlite
  6. 【转载】Android数据库事务浅析
  7. Android(安卓)使用ORMLite打造万能泛型Dao简化数据持久化层
  8. Android数据库事务浅析
  9. Android(安卓)Developers:日历提供者

随机推荐

  1. android使用文件进行存储
  2. Android 面试题总结之Android 进阶(二)
  3. Android当中的MVP模式(三)基于分页列表的封
  4. Android创始人安迪 罗宾(Andy Rubin)离职
  5. Android(安卓): 自己写个HTTP框架
  6. android textView 技巧 富文本显示 代码
  7. Android(安卓)butterknife注入完毕后不起
  8. Android(安卓)布局之GridLayout
  9. Android(安卓)studio问题小记---Could no
  10. Android应用程序消息处理机制(Looper、Han