MSSQL 트 랜 잭 션 의 저장 과정

호텔 관리 시스템 개발 에서 우 리 는 방 표 와 방 유형 표(방 형 표)라 는 두 개의 표를 만 들 것 이다.다음 그림 과 같다.
객실 유형 표:Room Type
      
    
룸 시트:룸
 
먼저 이 두 표 의 관계:Room 은 시계 에서,Room Type 은 메 인 시계 이 고,두 표 는 메 인 키 관계 가 있 으 며,Room Type.rTypeId=Room.rTypeId
이 두 개의 시 계 를 분석 하면 우 리 는 이러한 문 제 를 발견 할 수 있다.방 표 와 방 형 표 관리 에서 우리 가 Room Type 표를 수정 하거나 삭제 할 때 해당 하 는 Room 표 도 수정 하고 삭제 해 야 한다.그러면 우 리 는 이 문 제 를 어떻게 해결 해 야 합 니까?먼저 데이터 베이스 에 직렬 연결 을 설정 하여 삭제 하거나 트리거 를 이용 하여 해결 할 수 있 습 니 다.이런 방법 들 은 모두 어느 정도 단점 이 있 습 니 다.실제 개발 에서 우 리 는 사 무 를 사용 하여 이 문 제 를 해결 할 것 입 니 다.이런 방법 은 간단 하고 개발 효율 이 높 으 며 유지 하기 쉽 습 니 다.
요구:Room Type 을 삭제 하 는 동시에 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 --    

마지막 으로 데이터 층 이 저장 과정 을 직접 호출 하 는 방법 으로 방 형 을 삭제 하 는 동시에 이 방 에 존재 하 는 방도 삭제 할 수 있다.

좋은 웹페이지 즐겨찾기