Mysql SQL-多对多表不起作用
#1005-无法创建表'ass1 lol.management'(错误号:150)(详细信息… 当我尝试创建这个多对多表时,返回了上述错误 尝试在员工和主管之间创建多对多表,在创建主管和员工表时不会返回错误。但是当我去创建管理表时,我得到了上面的错误 这些是我的CREATETABLE语句 员工表Mysql SQL-多对多表不起作用,mysql,sql,sql-server,Mysql,Sql,Sql Server,#1005-无法创建表'ass1 lol.management'(错误号:150)(详细信息… 当我尝试创建这个多对多表时,返回了上述错误 尝试在员工和主管之间创建多对多表,在创建主管和员工表时不会返回错误。但是当我去创建管理表时,我得到了上面的错误 这些是我的CREATETABLE语句 员工表 CREATE TABLE IF NOT EXISTS employee ( emp_id INT(4) NOT NULL, yr_ser INT(4), status VARC
CREATE TABLE IF NOT EXISTS employee (
emp_id INT(4) NOT NULL,
yr_ser INT(4),
status VARCHAR(30),
emp_name VARCHAR(30),
emp_gen VARCHAR(1),
PRIMARY KEY (emp_id)
);
监督表
CREATE TABLE IF NOT EXISTS supervisor (
sup_id INT(4) NOT NULL,
sup_name VARCHAR(30) NOT NULL,
gen INT(4),
dep_id INT(4),
PRIMARY KEY (sup_id),
INDEX (dep_id),
FOREIGN KEY (dep_id)
REFERENCES department(dep_id)
ON UPDATE CASCADE ON DELETE RESTRICT
);
但是当我去创建这个表时,我得到了错误
管理表
CREATE TABLE IF NOT EXISTS management (
emp_id INT(4) NOT NULL,
sup_id INT(4) NOT NULL,
PRIMARY KEY (emp_id, sup_id),
INDEX (emp_id),
INDEX (sup_id),
FOREIGN KEY (emp_id)
REFERENCES employee(emp_id)
ON UPDATE CASCADE ON DELETE RESTRICT,
FOREIGN KEY (sup_id)
REFERENCES supervisor(act_id)
ON UPDATE CASCADE ON DELETE RESTRICT
);
非常感谢您的帮助。您可以在多个表中引用
主管
表中的一个字段act\u id
,但未定义此类字段。应改为sup\u id
:
CREATE TABLE IF NOT EXISTS management (
emp_id INT(4) NOT NULL,
sup_id INT(4) NOT NULL,
PRIMARY KEY (emp_id, sup_id),
INDEX (emp_id),
INDEX (sup_id),
FOREIGN KEY (emp_id)
REFERENCES employee(emp_id)
ON UPDATE CASCADE ON DELETE RESTRICT,
FOREIGN KEY (sup_id)
REFERENCES supervisor(sup_id) -- Here
ON UPDATE CASCADE ON DELETE RESTRICT
);
正如他们所说,魔鬼在于细节。或者换句话说,您应该包含完整的错误消息。