我试图通过以下方式向我的创建表 DDL 添加检查约束:
CREATE TABLE TYPE_SCENE
(
ID_TYPE_SCENE INTEGER(10) PRIMARY KEY AUTO_INCREMENT,
ID_TYPE INTEGER(10) NOT NULL,
CREATED_BY VARCHAR(20) NOT NULL,
CREATED_ON TIMESTAMP NOT NULL,
COMPLETE_SCENE CHAR(1),
INCOMPLETE_SCENE CHAR(1),
AMENDED_BY VARCHAR(20),
AMENDED_ON TIMESTAMP,
CONSTRAINT FK_TYPE FOREIGN KEY (ID_TYPE) REFERENCES TYPE_DATA(ID_TYPE),
CONSTRAINT COMPLETE_SCENE_CHECK CHECK (COMPLETE_SCENE IN ( 'M', 'N', 'O' )),
CONSTRAINT INCOMPLETE_SCENE_CHECK CHECK (INCOMPLETE_SCENE IN ( 'A', 'B', 'C' ))
)
但是,当我在 MySQL 工作台中运行此查询时,出现以下错误: 错误代码:1215。无法添加外键约束
我知道问题是由于 CHECK 约束,因为查询给了我一个指向 CHECK 约束的语法错误。我究竟做错了什么?我认为这是实现 CHECK 约束的方法。为什么说外键约束问题?
有趣的是,在我升级到 MySQL 5.6 之前,它曾经在 MySQL 5.1 上工作。
我阅读了一些论坛和问题,其中说 MySQL 不再支持此功能并使用触发器。但是它曾经与早期的 MySQL 版本一起工作。其次,我应该仍然能够执行查询,因为问题是约束在 MySQL 中不起作用,但它从来不是语法问题。
有任何想法吗?
谢谢!