Postgres - приведение к логическому - PullRequest
0 голосов
/ 11 июля 2011

Я пытаюсь обновить базу данных Postgres, чтобы установить логическое значение, но я получаю следующую ошибку

Ни один оператор не соответствует заданному имени и типу (аргументам) аргумента. Вам может понадобиться добавить явное приведение типов.

Я сократил описание таблицы, чтобы показать ее структуру.

       Column       |            Type             | Modifiers 
--------------------+-----------------------------+-----------
 archived           | boolean                     | 

Столбец в БД в настоящее время пуст, поэтому у меня нет других для сравнения.

Я пробовал следующее:

UPDATE table_name SET archived=TRUE WHERE id=52;
UPDATE table_name SET archived='t' WHERE id=52;
UPDATE table_name SET archived='1' WHERE id=52;
UPDATE table_name SET archived='t'::boolean WHERE id=52;

Ни один из них не сработал.

Как я могу привести свое ОБНОВЛЕНИЕ к логическому значению?

ОБНОВЛЕНИЕ: полное сообщение об ошибке

play_mercury=# UPDATE opportunities SET archived=TRUE WHERE id=(52,55,35,17,36,22,7,2,27,15,10,9,13,5,34,40,30,23,21,8,26,18,3,42,25,20,41,28,19,14,39,44,16,24,4,33,54,47,29,38,64);
ERROR:  operator does not exist: bigint = record
HINT:  No operator matches the given name and argument type(s). You may need to add explicit type casts.

Ответы [ 3 ]

5 голосов
/ 11 июля 2011

Проблема в WHERE id=(52,55,...)

Использование: WHERE id IN (52,55,...)

3 голосов
/ 11 июля 2011

Ваше WHERE состояние неверно.Вам нужно использовать IN вместо =

UPDATE opportunities 
  SET archived=TRUE 
WHERE id IN (52,55,35,17,36,22,7,2,27,15,10,9,13,5,34,40,30,23,21,8,26,18,3,42,25,20,41,28,19,14,39,44,16,24,4,33,54,47,29,38,64);
0 голосов
/ 11 июля 2011

Как ты это пытаешься? Через plsql? Согласно документам они должны быть действительными, и это также работает для меня:

tmp=# create table bar (a boolean, b int);
CREATE TABLE
tmp=# insert into bar values (TRUE, 1);
INSERT 0 1
tmp=# update bar set a=false where b=1;
UPDATE 1
tmp=# \d bar
      Table "public.bar"
 Column |  Type   | Modifiers 
--------+---------+-----------
 a      | boolean | 
 b      | integer | 
...