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
.
PostgreSQL поддерживает ENUM с версии 8.3 (см. Мой ответ). – bortzmeyer 2008-12-09 13:29:49
Спасибо, отредактировал мой ответ, чтобы это отразить. – mat 2008-12-09 14:42:17