중첩된 TRY...CATCH에서 오류 함수 사용하기
매장에 전기 자전거가 새로 입고되어, 재고를 업데이트해야 해요.
Trek Powerfly 5 - 2018 자전거 2대를 개당 $3499.99에, New Power K- 2018 자전거 3대를 개당 $1999.99에 입고 처리하려고 해요.
이 제품들이 신형이라고 생각해 데이터베이스에 삽입하려 했지만, 첫 번째 모델은 이미 재고에 있다는 사실을 깜박했어요. 다행히 products 테이블에는 모든 제품 이름이 고유해야 한다는 제약 조건이 있어요.
삽입 중 발생할 수 있는 오류를 제어하는 스크립트를 준비하세요. 또한 발생한 오류를 errors 테이블에 기록하고, 오류 기록에 실패할 경우 오류 번호와 오류 메시지를 표시하도록 하세요.
이 연습은 강의의 일부입니다
SQL Server에서의 트랜잭션과 오류 처리
연습 안내
- 오류 처리를
CATCH블록으로 감싸세요. errors테이블에'Error inserting a product'를 삽입하고, 이 삽입을 또 다른TRY블록으로 감싸세요.- 중첩된 오류 처리를 또 다른
CATCH블록으로 감싸세요. - 내부
CATCH블록에서 오류 라인과 오류 메시지를 선택하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
BEGIN TRY
INSERT INTO products (product_name, stock, price)
VALUES ('Trek Powerfly 5 - 2018', 2, 3499.99),
('New Power K- 2018', 3, 1999.99)
END TRY
-- Set up the outer CATCH block
___ ___
SELECT 'An error occurred inserting the product!';
-- Set up the inner TRY block
___ ___
-- Insert the error
INSERT INTO ___
VALUES ('Error inserting a product');
___ ___
-- Set up the inner CATCH block
___ ___
-- Show number and message error
SELECT
___ AS line,
___ AS message;
___ ___
___ ___