在表格之间添加关系时遇到一些麻烦
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年产生随机出生日期?
答案 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密钥。