SQL Server 2005でのトリガーの変更
-
06-07-2019 - |
質問
SQL Server 2005でトリガーを変更する必要がありますが、ストアドプロシージャではなく、テーブルアダプターとSQLステートメントを使用してトリガーを変更します。これをクエリブラウザで実行して実行できることは知っていますが、複数のデータベースに展開し、更新でテーブルアダプタを使用する必要があります。これは可能ですか?
クエリの追加->更新->以下のコードを貼り付ける->クエリビルダーで解析されるかどうかを確認する
print("USE [DataBaseName]
GO
/****** Object: Trigger [dbo].[UpdateCurrentAddress] Script Date: 10/30/2008 14:47:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[UpdateCurrentAddress] ON [dbo].[PreviousAddresses]
FOR INSERT, UPDATE, DELETE
AS
-- Check to see if there was an insert/update or a deletion.
IF (SELECT COUNT(*) FROM inserted) >= 1
BEGIN
IF (SELECT CountryID FROM inserted) <> 181
...moar...");
エラー... USE [DataBaseName] SQL構文またはステートメントはサポートされていません。
そして上部を削除し、ALTER TRIGGERから開始する場合
ALTER TRIGGER SQL構文またはステートメントはサポートされていません。
私はまだこれにかなり慣れていないので、これを間違った方法で行ったり、ストアドプロシージャなしでは実行できないことも驚くことではありません。
編集:はい、C#でこれを行っています。
ありがとう。 ALTER TRIGGERから始めれば、そのようにできます。これで仕事が完了します。
解決
TableAdapterは、実際のクエリではなく、結果セットを予期しています。これを正常に行うには、SqlCommandオブジェクトを使用して、実際に更新を実行する必要があります。
非常に簡単になる前に使用したことがない場合は、最初に接続を宣言してから、その接続を使用してコマンドを作成します。コマンドが作成されたら、スクリプトと同じコマンドテキストを設定し、接続を開いた後にExecuteNonQuery()メソッドを呼び出してスクリプトを実行できます。使用している言語を言う場合、例を提供することができます。
編集
これはC#の例で、手早くて汚いですが、要点はわかります。メモ、メモリから行われますが、正しいはずです。
using(SqlConnection oConnection = new SqlConnection("Yourconnectionhere"))
using(SqlCommand oCommand = new SqlCommand(oConnection))
{
//Configure the command object
oCommand.CommandText = "Your script here";
//Open connectin and run script
oConnection.Open();
oCommand.ExecuteNonQuery();
oConnection.Close();
}