Обновление SQL в одном выражении вместо двух - PullRequest
3 голосов
/ 14 июля 2011

Возможно ли сделать следующее в 1 операторе вместо 2. Мне нужно установить флаг isActive для одного идентификатора и установить для всех остальных значение false. Я использую Postgres DB.

tblNames 
------------------------
id,name,isActive
1,'n1',true
2,'n2',false
3,'n3',false
4,'n4',false

update tblnames
set isActive = true 
where id = 4

update tblnames
set isActive = false 
where id != 4

Ответы [ 3 ]

4 голосов
/ 14 июля 2011

Это работает?

update tblnames
set isActive = (id = 4)

Если этого не произойдет (я недостаточно хорошо знаю синтаксис Postgres), это, безусловно, будет работать:

update tblnames
set isActive case id when 4 then true else false end
2 голосов
/ 14 июля 2011
update tblnames
set isActive = (id = 4)

Не знаю, можете ли вы использовать логические выражения в обновлениях, но это стоит попробовать;)

0 голосов
/ 14 июля 2011
UPDATE tblnames
   SET isActive = CASE 
                    WHEN id = 4 THEN TRUE
                    WHEN id <> 4 THEN FALSE
                  END
 WHERE id IS NOT NULL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...