Невозможно использовать функцию замены для столбца пользовательского типа - PullRequest
0 голосов
/ 11 апреля 2019

Чтобы применить некоторые ограничения, наши разработчики используют пользовательский тип для столбца типа / фактора.

Пользовательский тип определен как таковой и включает как старое, так и новое значение:

create type custom_type as enum ('Value1', 'Value2', 'Value3', 'OldValue', 'NewValue');

Я пытаюсь обновить некоторые значения в таблице следующим образом:

UPDATE table SET column = replace(column, 'OldValue'::custom_type, 'NewValue'::custom_type);

Однако я получаю следующую ошибку:

[2019-04-11 16:37:42] [42883] ERROR: function replace(column, custom_type, custom_type) does not exist
[2019-04-11 16:37:42] Hint: No function matches the given name and argument types. You might need to add explicit type casts.

Я предполагаю, что для этого потребуется определить пользовательскую функцию «заменить», чтобы обрабатывать типы, или есть способ, которым я могу справиться с этим, просто приведя.

Для справки это PostgreSQL 11.2

1 Ответ

1 голос
/ 12 апреля 2019

replace() работает со строками, а не с перечислениями.Вы можете делать то, что хотите, с помощью UPDATE с предложением WHERE.

UPDATE table
       SET column = 'NewValue'::custom_type
       WHERE column = 'OldValue'::custom_type;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...