国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL Server事務的存儲過程

2024-08-31 00:55:29
字體:
來源:轉載
供稿:網友
SQL Server事務的存儲過程

在酒店管理系統開發中,我們會創建房間表和房間類型表(房型表)這兩個表,如下圖所示:

房型表:RoomType

房間表:Room

首先這兩個表的關系:Room是從表,RoomType是主表,兩表有主外鍵關系,RoomType.rTypeId=Room.rTypeId

分析這兩個表,我們會發現這樣一個問題:在房間表和房型表管理中,當我們修改或者刪除一個RoomType表,對應的Room表我們也要做修改和刪除,那么我們怎么解決這個問題呢?首先可以在數據庫中設置級聯刪除,或者利用觸發器也可以解決、、、這些方法都有一定的弊端,在實際開發中,我們會采取使用事務來解決這個問題,這種方法簡單而且開發效率高,容易維護。

要求:在刪除RoomType的同時把Room表中存在該房型的也刪除.

思路:在刪除RooType的時候,我們通過RoomType.rTypeId=Room.rTypeId找到Room中存在該房型的記錄,把也它刪掉。

說明:刪除不是把整條記錄從數據庫刪除,是將數據標識改為1,0是代表未刪除。

下面介紹刪除的存儲過程:

代碼:

 1 ALTER PRocedure [dbo].[usp_DelToomType] --創建刪除房型的存儲過程 2 @rTypeId int --房型參數 3 as 4 begin transaction  --開始事務 5   declare @error int  --定義一個變量標識錯誤號 6   update RoomType set rTypeIsDel=1 where rTypeId=@rTypeId  --根據條件刪除房型,rTypeIsDel=1標識刪除,0標識未刪除 7   set @error+=@@ERROR 8   if(@error<>0) --不等于0說明這一句執行出現錯誤 9   rollback transaction --事務回滾10   update Room set roomIsDel=1 where rTypeId=@rTypeId  --根據條件刪除房間11   set @error+=@@ERROR  12   if(@error<>0) --不等于0說明這一句執行出現錯誤13   rollback transaction --事務回滾14  else 15     commit transaction  --提交事務

最后,數據層直接調用存儲過程的方法即可完成刪除房型的同時把存在該房型的房間也刪除。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 诸暨市| 义乌市| 拜城县| 吉首市| 郯城县| 郎溪县| 鹤庆县| 隆德县| 怀柔区| 石林| 六安市| 祁连县| 庆城县| 通州市| 建平县| 延边| 镇坪县| 荔浦县| 渑池县| 金寨县| 揭东县| 上栗县| 南溪县| 杂多县| 华阴市| 班玛县| 新闻| 庆元县| 略阳县| 井研县| 永平县| 屏山县| 晋江市| 柯坪县| 曲靖市| 城步| 黔南| 宜丰县| 嘉定区| 中山市| 莱西市|