はじめてのエラーハンドリングスクリプト
products テーブルでは、stock 列に格納されるデータを検査する制約が設定されていないことに気づきました。stock は常に 0 以上であるのが自然です。
ところが、次の行に誤りがあります。stock が -1 になっています!
| product_id | product_name | stock | price |
|------------|--------------|-------|-------|
| 6 | Trek Neko+ | -1 | 2799 |
products テーブルに、stock が 0 以上のみ許可されるよう制約を追加するスクリプトを用意したいと考えています。
ただし、この「0 以上のみ許可」の制約を追加すると、stock が -1 の行が 1 行あるため、実行は失敗します。
どのようにスクリプトを準備しますか?
この演習はコースの一部です
SQL Server におけるトランザクションとエラー処理
演習の手順
- 制約の追加処理を
TRYブロックで囲みます。 productsテーブルに制約を追加します。- エラーメッセージの処理を
CATCHブロックで囲みます。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
-- Set up the TRY block
BEGIN ___
-- Add the constraint
ALTER TABLE ___
ADD CONSTRAINT CHK_Stock CHECK (stock >= 0);
___ ___
-- Set up the CATCH block
___ ___
SELECT 'An error occurred!';
END ___