CHECK (gender IN ('M','F')), На большинстве серверов БД проверочные ограничения работают со
ответствующим образом, а сервер MySQL допускает описание прове
рочных ограничений, но не выполняет их проверку. Но MySQL предос
тавляет другой символьный тип данных –
enum
(перечисление), кото
рый вводит проверочное ограничение в описание типа. Вот как это вы
глядело бы для описания столбца
gender
:
gender
ENUM('M','F'), Вот как выглядит создание таблицы
person
с введением типов данных
enum
для столбца
gender
:
CREATE TABLE person
(person_id SMALLINT UNSIGNED,
fname VARCHAR(20),
lname VARCHAR(20),
gender
ENUM('M','F') ,
birth_date DATE,
address VARCHAR(30),
city VARCHAR(20),
state VARCHAR(20),
country VARCHAR(20),
postal_code VARCHAR(20),
CONSTRAINT pk_person PRIMARY KEY (person_id)
);
Позже в данной главе будет показано, что происходит при попытке до
бавить в столбец данные, не соответствующие проверочному ограниче
нию (или, в случае MySQL, значениям перечисления).
Теперь все готово для выполнения выражения
create
table
с помощью
инструмента командной строки
mysql . Вот как это выглядит:
mysql>
CREATE TABLE person >
(person_id SMALLINT UNSIGNED,
40 Глава 2. Создание и заполнение базы данных
>
fname VARCHAR(20), >
lname VARCHAR(20), >
gender ENUM('M','F'), >
birth_date DATE, >
address VARCHAR(30), >
city VARCHAR(20), >
state VARCHAR(20), >
country VARCHAR(20), >