チュートリアル : T-SQL トリガのデバッグ
更新 : 2007 年 11 月
このトピックの内容は、次の製品に該当します。
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
||||
Standard |
||||
Pro/Team |
表の凡例 :
対象 |
|
該当なし |
|
既定で非表示のコマンド |
トリガをデバッグするには、トリガを発生させるストアド プロシージャにブレークポイントを設定し、トリガにブレークポイントを設定します。次に、「チュートリアル : T-SQL ストアド プロシージャのデバッグ」に記載されている手順を実行します。
この例では、AdventureWorks データベースを使用します。このデータベースには、UPDATE トリガを含む Sales.Currency テーブルが格納されています。この例には、テーブルの行を更新してトリガを発生させるストアド プロシージャが含まれます。トリガにブレークポイントを設定し、さまざまなパラメータを指定してストアド プロシージャを実行すると、トリガの異なる実行パスをたどることができます。
メモ : |
---|
使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。 |
SQL トリガをデバッグするには
新しい SQL Server プロジェクトで、AdventureWorks サンプル データベースとの接続を確立します。詳細については、「方法 : データベースに接続する」を参照してください。
後述する最初のサンプルにあるコードを使用して、新しいストアド プロシージャを作成し、UpdateCurrency_T_SQL と名前を付けます。詳細については、「方法 : SQL Server のプロジェクトの種類を使用して開発する」を参照してください。
UpdateCurrency_T_SQL にブレークポイントを設定します。この操作は、オプションです。ダイレクト データベース デバッグによって、プロシージャの最初の行がブレークポイントとして機能するためです。
トリガのブレークポイントを設定します。
[テーブル] ノードを右クリックし、[Sales.Currency] テーブルのノードを右クリックします。次に、uCurrency というトリガのアイコンをダブルクリックして、トリガのソース コードを開きます。
SET NOCOUNT ON ステートメントの横にある灰色のマージンをクリックし、トリガにブレークポイントを設定します。この手順は必ず実行してください。トリガにブレークポイントを設定しないと、ステップ インするときにコードがスキップされます。
ストアド プロシージャにステップ インします。詳細については、「方法 : サーバー エクスプローラを使用してオブジェクトにステップ インする」を参照してください。
[ストアド プロシージャの実行] ダイアログ ボックスが開き、パラメータ値を入力するように求められます。
次のパラメータ値を設定します。
@currencyCode = AAA
@name = My Test Name など任意の値
SET @mynvarchar = @@VERSION 行に、命令ポインタ (黄色の矢印) が表示されます。これは、ストアド プロシージャにおける最初の実行可能なコード行です。
いろいろなデバッグ機能を試してください。
F11 キーまたは [ステップ イン] ボタンでコード全体をステップ実行します。
UPDATE ステートメントで改めて F11 キーを押すと、トリガにステップ インします。
トリガ全体のステップ実行を終了してから、ストアド プロシージャに戻り、最後まで実行されます。
データが挿入されたことを確認するには、サーバー エクスプローラで、[テーブル] の下にある [Sales.Currency] ノードを右クリックし、[テーブル データの表示] をクリックします。
使用例
これは、トリガを発生させるストアド プロシージャのコードです。
ALTER PROCEDURE dbo.UpdateCurrency_T_SQL
(
@currencyCode nvarchar(3),
@Name nvarchar(50)
)
AS
SET NOCOUNT ON
UPDATE Sales.Currency
SET Name = @Name
WHERE CurrencyCode = @currencyCode
RETURN