Есть таблица с колонкой 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
Комментариев нет:
Отправить комментарий