始める無料で始める

はじめてのエラーハンドリングスクリプト

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 ___
コードを編集して実行