嗨,我正在尝试创建一个简单的 MySQL 数据库。我编写了以下脚本
CREATE TABLE office (
num_office varchar(10) NOT NULL,
name varchar(45),
address varchar(45),
numder varchar(4),
city varchar(45)
);
CREATE TABLE office_phone(
n_office varchar(10) NOT NULL,
phone varchar(15) NOT NULL,
PRIMARY KEY(n_office,phone),
FOREIGN KEY (n_office) REFERENCES office(num_office)
ON DELETE RESTRICT
ON UPDATE CASCADE
);
但出现错误代码1822。 我该如何修复它? 在此先谢谢您
最佳答案
外键只能引用主键列或至少有索引的列(感谢@Uueerdo)。例如:
ALTER TABLE OFFICE ADD CONSTRAINT offnum_unq UNIQUE (NUM_OFFICE);
这会强制引用的列具有唯一值,并在其上创建索引。或者你也可以这样做:
CREATE INDEX offnum_idx ON OFFICE(NUM_OFFICE);
现在你的第二个CREATE
应该可以工作了。
关于mysql - 无法在mysql上创建外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53784397/