PostgreSQL поддерживает ENUM начиная с 8.3. Для более старых версий вы можете использовать:
Вы можете смоделировать ENUM, выполнив что-то вроде этого:
CREATE TABLE persons (
person_id int not null primary key,
favourite_colour varchar(255) NOT NULL,
CHECK (favourite_colour IN ('red', 'blue', 'yellow', 'purple'))
);
Вы также можете иметь:
CREATE TABLE colours (
colour_id int not null primary key,
colour varchar(255) not null
)
CREATE TABLE persons (
person_id int not null primary key,
favourite_colour_id integer NOT NULL references colours(colour_id),
);
, который позволит вам добавить объединение, когда вы узнаете любимый цвет, но имеет то преимущество, что вы можете добавлять цвета, просто добавляя запись в таблицу цветов, а не то, что вам не нужно будет менять схему каждый время. Вы также можете добавить атрибут к цвету, например, HTML-код или значения RVB.
Вы также можете создать свой собственный тип, который выполняет перечисление, но я не думаю, что он будет быстрее, чем varchar и CHECK
.