1

ManagementStudioの動作と混同しました。テスト用の単純なトリガー(UPDATEアクション)を作成しました。メッセージタブにメッセージ(印刷)が表示されるはずですが、メッセージタブが表示されず、出力が表示されません。他のクエリを実行すると、結果タブとメッセージタブが表示されます。トリガーはそれ自体で機能します(データは変化しています)。

これが私のコードです:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[Trigger1]
ON [dbo].[TestTable]
FOR UPDATE
AS
    PRINT ('YAHOOOOO!!!') /* can't see this message */
    UPDATE TestTable
    SET    TestData = 'testitem'
    WHERE  (TestId = 2)
4

1 に答える 1

2

2つの問題

  1. トリガーは、トリガーを再度呼び出すテーブルを(トリガー内で)更新しようとするため、「再帰が多すぎます」エラーを引き起こします。実際には、SQL Server はエラーを検出した後にそれを強制終了します。

  2. 「上位 200 行の編集」は、独自のメッセージ ウィンドウを持つ特別な機能であるため、出力は表示されません。新しいクエリ ウィンドウでコードを実行する必要があります。

新しいクエリ ウィンドウで、次のようにトリガーを再定義します。

ALTER TRIGGER [dbo].[Trigger1]
ON [dbo].[TestTable]
FOR UPDATE
AS
    PRINT 'YAHOOOOO!!!'; /* can't see this message */
GO

次に、この UPDATE ステートメントを単独で実行します。

UPDATE TestTable
SET    TestData = 'testitem'
WHERE  TestId = 2;

注: 不要な括弧は削除してください。

于 2012-12-16T22:11:46.673 に答える