перечисления не очень хороший способ для моделирования. В Postgres существуют лучшие альтернативы, например проверить ограничения или внешние ключи.
Но если вы хотите отменить нормализацию своей модели (что и делают перечисления), вам нужно сначала определить тип перечисления:
CREATE TYPE emp_type AS ENUM ('admin','employee');
CREATE TABLE employees
(
id int NOT NULL,
firstname varchar(100) NOT NULL,
lastname varchar(100) NOT NULL,
username varchar(40) NOT NULL,
password varchar(100) NOT NULL,
phone varchar(100) NOT NULL,
address text NOT NULL,
type emp_type NOT NULL DEFAULT 'employee'
);
Другой вариант (который занимает немного больше места, но является более гибким) - использовать проверочное ограничение (которое MySQL до сих пор не поддерживает, и перечисления являются обходным путем):
CREATE TABLE employees
(
id int NOT NULL,
firstname varchar(100) NOT NULL,
lastname varchar(100) NOT NULL,
username varchar(40) NOT NULL,
password varchar(100) NOT NULL,
phone varchar(100) NOT NULL,
address text NOT NULL,
type text NOT NULL DEFAULT 'employee',
check (type in ('employee', 'admin'))
);
Обратите внимание, что type
является ключевым словом SQL (но не зарезервированным). Но в целом было бы лучше избегать использования ключевых слов в качестве идентификаторов.