Задать вопрос
Illorian
@Illorian
Front-end разработчик

Как удалить строку из базы при обновлении, чтобы избежать конфликта?

Собственно у меня есть таблица, которая состоит из полей

  • microservice_id
  • transport_id
  • username
  • password
  • is_default


и уникальный ключ (microservice_id, transport_id)
Я пытаюсь сделать запрос

UPDATE microservices_transports
SET
  transport_id = :next,
  username     = :username,
  password     = :password,
  is_default   = COUNT((SELECT *
                        FROM
                          (DELETE FROM microservices_transports AS mt WHERE mt.transport_id = :next AND mt.microservice_id = microservice_id RETURNING *)
                        WHERE is_default = TRUE
                       )) > 0
WHERE
  transport_id = :prev


Но он ругается на синтаксис около DELETE. Я не знаю, как по-другому сделать такого рода действие. Может есть какие-то более лёгкие или правильные пути?
  • Вопрос задан
  • 159 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
Afinogen
@Afinogen
PHP разработчик
После FROM должно быть название таблицы, а у Вас там удаление которое возвращает *
Ответ написан
@gill-sama
Что бы сделать select из delete нужно что бы этот самый delete что-то возвращал. У Вас этого нет. Вам нужен returning в delete
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы