У меня есть триггер Microsoft SQL Server, который обновляет удаленную базу данных новыми значениями при обновлении локальной базы данных. Все работает нормально, и я тестировал скрипт, и он обновляется отлично, если нет нулевого значения.Открытый SQL-запрос T-SQL не обновляется по значению 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
значений. Все столбцы в обеих базе данных допускают нулевые значения и по умолчанию имеют значение null, поэтому я не уверен, почему я не могу обновить базу данных.
Любая помощь будет приятной, спасибо!
Почему это было связано с MySQL? – tadman
Забыл упомянуть, что я использовал openquery для взаимодействия с базой MySql –
Вы подключаетесь к MySQL * через * SQL Server? Это звучит как рецепт неприятностей. Значения «NULL» не являются строками. Им нужно избегать иначе. – tadman