「バインドすることができなかった」私はトリガーを書いたが、私はエラーを取得:IFとトリガーとSQL ServerでのJOINは
Msg 4104, Level 16, State 1, Procedure quest_field_key_af, Line 5
The multi-part identifier "query_creator.field_key" could not be bound.
これは動作するはずですが、それはほとんどcompliteだと私はどのように任意のアイデアを持っていませんそれを修正する。
CREATE TRIGGER SAMPLE_NAME
ON [dbo].[QC]
AFTER INSERT, UPDATE
AS
IF ([QC].field_key != 'blank_blank')
BEGIN
UPDATE [dbo].[CQ]
SET [CQ].quest_field_key = (CONVERT(NVARCHAR(8), [CQ].quest_id)+'_'+RIGHT('000'+ CAST([CF].field_no AS VARCHAR(3)),3))
FROM dbo.query_creator
INNER JOIN query_field ON [CQ].field_key = [CF].field_key
WHERE [QC].status = 1
END
ELSE
BEGIN
UPDATE [dbo].[QC]
SET quest_field_key = (CONVERT(NVARCHAR(8), [QC].quest_id)+'_'+RIGHT('000'+ CAST(no AS VARCHAR(3)),3)+'b')
FROM dbo.QC
END;
私はそれを修正するか、私に役立つ他のもののアイデアを教えてください。
([QC] .field_key!=「blank_blank」)はトリガーでは動作しません場合は、挿入されたテーブルをループしており、挿入されたテーブル – GuidoG
から各更新または挿入されたレコードのためにこれを行う。これは持っています不適切に定義されたキー構造に起因する課題である外観。複数のデータをこのように1つの列に分割する代わりに、複合キーを使用することを検討しましたか?あなたが持っているものは1NFに違反しており、データが変更された場合に対処するために非常に醜いことがあります。このデザインに固執していても、このためにルーピングに頼らないでください。ここでは、left joinとcase式を持つ単一のupdate文では実行できないものはありません。 –
あなたは私に何をお勧めしますか? – JaNieWiem