外键约束不会在MySQL中执行。编辑:用'other'替换了'schema'。
外键约束不会在MySQL中执行。编辑:用'other'替换了'schema'。
我正在创建两个表,顾客和订单。目标是在订单表的顾客列中创建一个约束,只允许插入已存在的顾客。
这是我尝试的代码:
CREATE TABLE other.customers ( customers_id INT NOT NULL AUTO_INCREMENT, name VARCHAR(45) NULL, PRIMARY KEY (customers_id) );
接下来我创建订单表:
CREATE TABLE other.orders ( orders_id INT NOT NULL, customer INT NOT NULL, PRIMARY KEY (orders_id), INDEX customers_idx (customer ASC), CONSTRAINT customers FOREIGN KEY (customer) REFERENCES other.customers (customers_id) ON DELETE CASCADE ON UPDATE CASCADE );
两次都没有出现错误,但是显然这并没有起作用,我看不到约束。
所以我尝试修改订单表:
ALTER TABLE other.orders ENGINE = InnoDB; ALTER TABLE other.orders ADD CONSTRAINT customer FOREIGN KEY (customer) REFERENCES other.customers (customers_id) ON DELETE CASCADE ON UPDATE CASCADE;
但是这次我得到了一个SQL错误:
操作失败:在将SQL脚本应用于数据库时出错。
ERROR 1215: 无法添加外键约束
我可能漏掉了一些微不足道的东西,但是就是摸不着头脑。