Страницы

Поиск по вопросам

вторник, 25 декабря 2018 г.

SQL обновление нескольких записей одним запросом

Есть таблица с колонкой active, в один момент времени может быть активна только одна запись. Необходимо делать UPDATE записи и ставить значение active в true, и одновременно ставить в false значение active в старой записи. Подскажите как это сделать одним запросом.
Пример
Исходная таблица
id name active 1 a true 2 b false 3 c false
После
id name active 1 a false 2 b true 3 c false


Ответ

Update меняющий у одной записи active на true и у всех других записей, которые сейчас active на false (гарантирует, что в таблице только одна запись может быть true):
with Q as ( select * from testBool where active=true or id=3 ) update testBool T set active=not T.active from Q where exists(select 1 from Q where active=false) and T.id=Q.id

Комментариев нет:

Отправить комментарий