我正在创建我的第一个mysql脚本,并希望创建一个'type'列的表。它应该只有两个可能的值:“XYZ”和“ABC”,所以我做了:SQL,约束CHECK
CREATE TABLE table(
type varchar(12) NOT NULL,
CHECK (type = 'XYZ' or type = 'ABC');
但是当我测试和像234或“约翰”插入值它的工作,并且不返回任何错误。我认为它不应该插入价值'约翰',是吗?
我正在创建我的第一个mysql脚本,并希望创建一个'type'列的表。它应该只有两个可能的值:“XYZ”和“ABC”,所以我做了:SQL,约束CHECK
CREATE TABLE table(
type varchar(12) NOT NULL,
CHECK (type = 'XYZ' or type = 'ABC');
但是当我测试和像234或“约翰”插入值它的工作,并且不返回任何错误。我认为它不应该插入价值'约翰',是吗?
的MySQL does not support检查约束:
The CHECK clause is parsed but ignored by all storage engines.
因此,尽管check
声明不给一个错误,它忽略。
+1不错,比检查限制灵活一点,但适合OP的问题 – Andomar
我之前使用过ENUM,但我只是感兴趣的是我是否也可以使用CHECK,以及如何做到这一点。但也谢谢 –
哈。在MySQL中似乎有很多类似的东西。语法它可以让你编写它实际上没有做任何事情。我宁愿它默认情况下很吵,并说当事情不会做任何事时。 – theon
@theon:你可以随时升级到PostgreSQL;) –
@a_horse_with_no_name:D我们在两个工作地点都使用,所以我可以同样地抱怨它们。 – theon