MSSQL事務的存儲進程。本站提示廣大學習愛好者:(MSSQL事務的存儲進程)文章只能為提供參考,不一定能成為您想要的結果。以下是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 --提交事務
最初,數據層直接挪用存儲進程的辦法便可完成刪除房型的同時把存在該房型的房間也刪除。