SQL,约束CHECK

时间:2012-11-24 16:43:01

标签: mysql sql

我正在创建我的第一个mysql脚本,并希望创建一个包含列' type'的表格。它应该只有两个可能的值:' XYZ'和ABC'所以我做了:

CREATE TABLE table(
type varchar(12) NOT NULL,
CHECK (type = 'XYZ' or type = 'ABC');

但是当我测试并插入像234或者John'它正在工作,并且不会返回任何错误。我认为它不应该插入价值' John',是吗?

3 个答案:

答案 0 :(得分:2)

MySQL does not support检查约束:

The CHECK clause is parsed but ignored by all storage engines.

因此,虽然check语句没有给出错误,但它会被忽略。

答案 1 :(得分:1)

改为使用enum

CREATE TABLE test( 
  type ENUM('XYZ', 'ABC')
);

this SQL fiddle。尝试将插入更改为'John',您将收到错误:

答案 2 :(得分:0)