Как мне установить ограничение-проверки на два условия?

пытаюсь организовать добавление колонки вот таким способом

ALTER TABLE main_owner ADD COLUMN fsex varchar(1) NOT NULL  check ('M' or 'W');

получаю такую ошибку
ERROR: invalid input syntax for type boolean: "M"
как мне её исправить и чем она вызвана ?
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
0xD34F
@0xD34F
ALTER TABLE main_owner ADD COLUMN fsex varchar(1) NOT NULL  check (fsex = 'M' or fsex = 'W');

Или так:

ALTER TABLE main_owner ADD COLUMN fsex varchar(1) NOT NULL  check (fsex IN('M', 'W'));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
Для перечислений можно использовать родной enum
melkij=> create type gender as enum('M','W');
CREATE TYPE
melkij=> create table foo (f gender);
CREATE TABLE
melkij=> insert into foo values('M');
INSERT 0 1
melkij=> insert into foo values('F');
ОШИБКА:  неверное значение для перечисления gender: "F"
СТРОКА 1: insert into foo values('F');
                                 ^
melkij=> insert into foo values('');
ОШИБКА:  неверное значение для перечисления gender: ""
СТРОКА 1: insert into foo values('');

И явный check не нужен и добавлять значения проще, особенно если поле используется не в одном месте базы только.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы