#sql #postgresql
#sql #postgresql
Вопрос:
Я пытаюсь написать запрос для обновления значения столбца xml, которое может иметь или не иметь существующее значение. Я пробовал этот запрос, но он выдает синтаксическую ошибку, не знаю почему. Я не эксперт по SQL, я просто работаю с существующим кодом.
Ошибка
ERROR: syntax error at or near "("
LINE 4: SET user_prop.modify('replace value of ("//PREF/NOTIFICATION...
^
SQL state: 42601
Character: 199
Запрос
UPDATE user
SET user_prop.modify('replace value of ("//PREF/NOTIFICATIONS/@ASK_YOUR_INSTR") with ("TRUE")') where username='1038125@';
Значение XML
<PROP>
<ACL DENY="CREATECOURES"></ACL>
<PREF>
<NOTIFICATIONS ASK_YOUR_INSTR="FALSE" />
</PREF>
</PROP>
Ответ №1:
ЗАДАННОЙ части ОБНОВЛЕНИЯ требуется присвоение, например
update foo
set bar = bar 1
where id = 1;
Вы не сказали нам, что делает ваша функция modify()
, но если она возвращает измененное значение XML, то, я думаю, вы ищете:
UPDATE user
SET the_column = user_prop.modify('....')
where username='1038125@';
Комментарии:
1. Что ж, я исправил эту ошибку. И предполагается, что функция modify() изменяет значение узла xml
2. @M.WaseemUllahKhan не показывая нам, что
modify()
делает ваша функция, на это невозможно ответить.3. Я нашел эту функцию в Интернете и подумал, что она может работать, но, похоже, у Postgres нет способа обновить значение.
Ответ №2:
Я думаю, это ответ
UPDATE HR_XML
SET Salaries.modify('replace value of
(/Salaries/Marketing/Employee[@ID=("2")]/Salary/text())[1] with ("60000")')
можете ли вы попытаться удалить кавычки из //PREF/NOTIFICATIONS/@ASK_YOUR_INSTR
Комментарии:
1. Это недопустимый SQL