mysql一对多关系不起作用

时间:2017-05-25 18:37:57

标签: mysql sql

在表格之间添加关系时遇到一些麻烦

CREATE TABLE IF NOT EXISTS `employees` (
`emp_id` int(11) NOT NULL auto_increment,
`emp_fname` char(50) NOT NULL,
`emp_sname` char(50) NOT NULL,
`emp_patr` char(50) NOT NULL,
`emp_birth` datetime NOT NULL default CURRENT_TIMESTAMP,
`isInCharge` boolean default NULL,
`depart_id` int(11) NOT NULL,
PRIMARY KEY (`emp_id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

CREATE TABLE IF NOT EXISTS `department` (
`depart_id` int(11) NOT NULL auto_increment,
`depart_name` char(50) NOT NULL,
PRIMARY KEY (`depart_id`),
FOREIGN KEY (depart_id) REFERENCES employees (depart_id) on delete 
cascade on update cascade
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

Cannot add foreign key constraint

出了什么问题?我需要让许多员工成为一个部门。

另外,如何从1950年到1990年产生随机出生日期?

2 个答案:

答案 0 :(得分:3)

你的外键是在错误的地方。它属于employees表而不是department表。它应该是:

FOREIGN KEY (depart_id) REFERENCES department(depart_id) on delete cascade on update cascade

这应该很容易记住。您可以在列唯一的表中定义键。您可以在引用该主键的所有表中定义外部键。

答案 1 :(得分:2)

它应该是对的吗? Employee中的dept_Id应该是引用部门主键Dept_ID的foriegn密钥。