私はemtpyトリガーを作成したい、ここで奇妙な問題を抱えている:VS2010内のSQLファイルからトリガを作成しますか?
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER dbo.TestTrigger
ON _TestDB.dbo.test
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
END
GO
私はSSMS内にこれを実行すると、それは完璧に動作しますが、私は、Visual Studio内の新しいSQLファイルを作成する場合とSQLを実行」をクリック
メッセージ2108、レベル15、状態1、プロシージャTestTrigger、 '_TestDB.dbo.test' ausgeführtのwerden、ダSICH ダスライン13 Erstellen トリガーカンのNICHTファー:」、そして、私はエラーメッセージが表示されますZiel Nicht in der Aktuellen Datenbankのプロフィール。
翻訳:
メッセージ2108、レベル15、状態1、プロシージャTestTrigger、ライン13は、 トリガを作成 ターゲットがないので、 '_TestDB.dbo.test' のために実行することができません現在のデータベースに存在します。
SSMSとVS2010は、両方とも同じユーザーと同じデータベースサーバーに接続されています。
Visual Studioでは単純なSelect * From _TestDB.dbo.test
が機能するため、データベースへの接続が機能するはずです。しかし、なぜそれは作成トリガーのために働いていないのですか?
ありがとう、それは動作します。しかし、なぜ私は理解していない。私は "ON _TestDB.dbo.test"と思ったのですが、私はすでに使用するデータベースを教えてくれましたか? – Feroc
トリガをイベントの「リスナ」/サブスクライバとみなします。トリガは、リスンしているアクションの「サブジェクト」(テーブルdbo.Testの更新)と同じdb内になければなりません。ただし、 'ローカル'トリガーを使用して別のデータベースの表にデータを挿入することはできます。 – StuartLC
私は技術的に違いがないとは認めなければなりませんが、とにかく大きなSQL-guyではありません。常に、 "USE _TestDB"は、このスクリプトに使用するデータベースを教えてくれますが、 "Create ... ON _TestDB.dbo.test"は、トリガーが_TestDBにあることを通知する必要があります。しかし、私のバージョンがSSMSで動作していない(スクリプトを編集している間にドロップダウンリスト内のデータベースを変更しても)、私はこのようにデータベースを指すことはできないと受け入れなければならないと思う。再度、感謝します。 :) – Feroc