Мне нужно выполнить простой запрос на обновление, где обновление должно быть выполнено, если нет значения с обновляемым значением (item_name). Например,
Таблица DB [item_types]
item_id(PK) | item_name
Предполагая, что существует item_id с 6, Моя попытка
UPDATE item_types as k SET k.item_name = 'item_1' WHERE NOT EXISTS (SELECT * FROM item_types as a WHERE a.item_name = 'item_1') AND k.item_id = '6'
Но это дает мне ошибку
"You can't specify target table 'k' for update in FROM clause"
Не могли бы вы объяснить здесь ошибку и как я могу это достичь?
Спасибо
Вы можете поместить уникальное ограничение в поле item_name и уловить ошибку.
Как предположил Тоби, вы не можете использовать псевдоним в строке UPDATE. Попробуйте использовать следующий синтаксис:
UPDATE item_types
SET item_name = 'item_1'
FROM item_types k
WHERE NOT EXISTS (SELECT * FROM item_types as a WHERE a.item_name = 'item_1')
AND k.item_id = '6'
hth, R
Я не думаю, что вы можете использовать псевдоним для таблицы в инструкции insert. Также используйте, а не AND.
Try
UPDATE item_types SET item_name = 'item_1' WHERE NOT EXISTS (SELECT * FROM
item_types as a WHERE a.item_name = 'item_1') , item_id = '6'