我有两张桌子:
表1:具有以下列的staff_incharge - First_name和staff_id (这是主键)
表2:具有以下列的student-info -- First_name Last_name ID(主键)--我尝试将另一个列staff_id设置为外键,但它显示了一些错误。
这是我在MySQL查询浏览器中使用的查询:
alter table `student_info`
add constraint foreign key (staff_id)
references staff_incharge(staff_id);错误是:
您的SQL语法出现错误;请检查与MySQL服务器版本相对应的手册,以获得在第1行“
student_info添加约束外键(staff_id) references staff_incharge”附近使用的正确语法。
有人能告诉我我做错了什么吗?
首先创建student_info表,然后创建staff_incharge。
以下查询的输出:
SHOW CREATE TABLE student_info;
CREATE TABLE `student_info` (
`First_name` varchar(15) NOT NULL DEFAULT '',
`Last_name` varchar(45) NOT NULL,
`ID` int(10) unsigned NOT NULL DEFAULT '0',
`staff_id` int(11) NOT NULL DEFAULT '0',
`City` varchar(15) NOT NULL DEFAULT '',
`Marks1` int(10) unsigned NOT NULL DEFAULT '0',
`Marks2` int(10) unsigned NOT NULL DEFAULT '0',
`Marks3` int(10) unsigned NOT NULL DEFAULT '0',
`Total_marks` int(10) unsigned NOT NULL DEFAULT '0',
`Branch` varchar(10) NOT NULL,
PRIMARY KEY (`ID`,`First_name`)显示创建表staff_incharge;
'staff_incharge', 'CREATE TABLE `staff_incharge` (
`First_name` varchar(20) NOT NULL,
`Staff_id` int(11) NOT NULL,
PRIMARY KEY (`Staff_id`)
) 发布于 2013-09-24 05:54:13
最小代码-不显式命名外键约束(MySQL将选择半随机名称):
ALTER TABLE student_info
ADD FOREIGN KEY (staff_id)
REFERENCES staff_incharge (staff_id) ;命名外键约束:
ALTER TABLE student_info
ADD CONSTRAINT staff_incharge__student_info__FK -- name of your choice
FOREIGN KEY (staff_id)
REFERENCES staff_incharge (staff_id) ;发布于 2013-09-24 09:09:28
这样啊,原来是这么回事!问题是,我为ID和staff_id提供了不同的默认值。主要是确保外键和引用列具有相同的数据类型、长度、属性、默认值和排序规则。
这些联系有助于:
https://stackoverflow.com/questions/18973890
复制相似问题