我有一個Microsoft SQL Server觸發器,用於在更新本地數據庫時使用新值更新遠程數據庫。一切工作正常,我測試了腳本,它的更新很好,除非有一個空值。T-SQL openquery不會更新NULL值
的代碼如下:
DECLARE @TSQL nvarchar(4000);
SELECT @TSQL =
'UPDATE
OPENQUERY(TEST,''SELECT * FROM test_db WHERE id = ' + convert(VARCHAR(MAX), @id) +''')
SET
parent_id = ' + convert(VARCHAR(MAX), @parent_id) + ', user_id = ' + convert(VARCHAR(MAX), @user_id) + ', item_id = ' + convert(VARCHAR(MAX), @item_id) + ''
EXEC (@TSQL)
一切運作良好,如果所有字段具有值,但如果一個欄爲空,則查詢不更新該行所有,拋出任何錯誤。我嘗試使用COALESCE()
將空變量更改爲空字符串,然後它將更新該行,但所有空列變爲0,我希望它們保留爲NULL
值。兩個數據庫中的所有列都允許空值,默認爲空,所以我不知道爲什麼我無法更新數據庫。
任何幫助將不錯,謝謝!
爲什麼這個標記爲MySQL? – tadman
忘了提及我正在使用openquery與MySql數據庫進行交互 –
您正在通過* SQL Server連接到MySQL *這聽起來像是一個麻煩的祕訣。 NULL值不是字符串。他們需要以不同的方式逃脫。 – tadman