我寫了扳機,但我得到一個錯誤:觸發與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;
請幫我解決它或給我一個其他的東西的想法。
IF([QC] .field_key!=「blank_blank」)不會觸發工作,你必須通過插入表循環,並從inserted表 – GuidoG
這有這樣做的每個更新或插入記錄由於不正確定義的關鍵結構而出現的挑戰。您是否考慮過使用複合鍵而不是將多個數據碎片整理成單個列?你有什麼是違反1NF的,如果任何數據發生變化,可能會超級醜陋。即使你堅持使用這種設計,也不要訴諸循環。這裏沒有任何東西不能在具有左連接和case表達式的單個更新語句中完成。 –
那麼你向我推薦什麼? – JaNieWiem