私はトリガを動的に作成しようとしており、create文の一部、特に結合が行われたデータベース名を置き換える必要があります。SQLトリガ作成で変数を使用する
CREATE TRIGGER [dbo].[tr_UseType_update] ON [dbo].[UseType] FOR UPDATE AS
BEGIN
SET NOCOUNT ON
INSERT [dbo].[UseType]
SELECT 'Updated', i.*
FROM inserted
INNER JOIN [(SELECT DB_NAME())].[dbo].[UseType] i ON inserted.[UseTypeID] = i.[UseTypeID]
END
)私はこれを試してみたが、明らかにそれはちょうどそれが実際にSELECT DB_NAMEを(評価しないテキストは使用しています、それはこの値を評価するために取得する方法があります。
私は2005/8 SQLを使用しています。私たちはsqlcmdを使用するデプロイメントツールを持っているので、sqlcmdに渡すことができる変数を取り込むようにツールを変更することになりますが、私は作業量を減らして(生成される)スクリプト自体で行うことができます。便利です。
これは、このトリガーを持つUseTypeテーブルを含む同じデータベースに解決されるため、DB_NAME()は必要ありません。トリガーがオンになっている同じテーブルに書き込みます。あなたが実際に*解決しようとしている問題は何ですか? – gbn
なぜデータベース名を含むのですか? 'dbo.UseType'はあなたに適切なテーブルを与えるべきではありませんか? –
トリガーは、データベース内のデータベースとは別のデータベースにあります –