外键约束不会在MySQL中执行。编辑:用'other'替换了'schema'。

30 浏览
0 Comments

外键约束不会在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: 无法添加外键约束

我可能漏掉了一些微不足道的东西,但是就是摸不着头脑。

0