以下は、更新トリガーの代わりに私の一部です
CREATE TRIGGER TestDemo ON Consultants1
更新の代わりに
なので
DECLARE @Sql nvarchar(200),
@TableName nvarchar(50),
@FieldName nvarchar(100),
@PKCols VARCHAR(1000), -- 主キー
@Value nvarchar(100)
SET @TableName = 'コンサルタント1'
SET @FieldName = '表示名'
SET @Value = 'Test123'
SELECT * INTO #ins FROM 挿入
SELECT @PKCols = c.COLUMN_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS pk 、
INFORMATION_SCHEMA.KEY_COLUMN_USAGE c
WHERE pk.TABLE_NAME = @テーブル名
AND CONSTRAINT_TYPE = '主キー'
AND c.TABLE_NAME = pk.TABLE_NAME
AND c.CONSTRAINT_NAME = pk.CONSTRAINT_NAME
SELECT @Sql = 'UPDATE' + @TableName + 'SET'
SELECT @Sql = @Sql + @FieldName + ' = ''' + @Value + ''''
SELECT @Sql = @Sql + ' WHERE #ins.' + @PKCols + ' = ' + @TableName + '.' + @PKCols
EXEC (@Sql)
トリガーはエラーなしで作成されます。今、次のクエリを実行しようとしています
UPDATE Consultants1 SET DisplayName = 'abcd'
ここで、ConsIntID = 'Test123285'
次のようなエラーが表示されます。
メッセージ 4104、レベル 16、状態 1、行 1 マルチパート識別子「#ins.ConsIntID」をバインドできませんでした。
コードのどこが間違っているのか理解できませんでした。助けてください