Поле CHAR может иметь только определенные значения - CONTRAINT - PullRequest
0 голосов
/ 11 октября 2011

Как сделать ограничение в таблице для поля (CHAR (20)), которое может принимать только, например, "машина" или "велосипед".

CREATE TABLE Things (
id INTEGER NOT NULL,
thing CHAR(30) NOT NULL,
PRIMARY KEY (id),
CONSTRAINT thingcheck CHECK (thing = "car" OR thing = "bike")
);

Если я вставлю(1, «ноутбук») он все еще вставляет!Любые идеи?

Большое спасибо за ваше время.

--- EDIT ---

Как отметил Джон, MySQL игнорировал предложения CHECK.Спасибо!

Ответы [ 3 ]

3 голосов
/ 11 октября 2011

как насчет:

ENUM('car', 'bike')
0 голосов
/ 11 октября 2011

Как насчет этого,

CREATE TABLE Things (
id INTEGER NOT NULL,
thing CHAR(30) NOT NULL CHECK (thing = 'car' or thing='bike'),
PRIMARY KEY (id),
);

Вы должны дать строки в одинарных кавычках !!

0 голосов
/ 11 октября 2011

Вы можете создать таблицу, содержащую список разрешенных значений, а затем установить для нее ограничение FOREIGN KEY . Но на самом деле, почему бы просто не использовать ENUM?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...