首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL加外键

MySQL加外键
EN

Stack Overflow用户
提问于 2013-09-24 05:51:32
回答 2查看 1.3K关注 0票数 0

我有两张桌子:

表1:具有以下列的staff_incharge - First_namestaff_id (这是主键)

表2:具有以下列的student-info -- First_name Last_name ID(主键)--我尝试将另一个列staff_id设置为外键,但它显示了一些错误。

这是我在MySQL查询浏览器中使用的查询:

代码语言:javascript
运行
复制
 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

以下查询的输出:

代码语言:javascript
运行
复制
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;

代码语言:javascript
运行
复制
'staff_incharge', 'CREATE TABLE `staff_incharge` (
  `First_name` varchar(20) NOT NULL,
  `Staff_id` int(11) NOT NULL,
  PRIMARY KEY (`Staff_id`)
) 
EN

回答 2

Stack Overflow用户

发布于 2013-09-24 05:54:13

最小代码-不显式命名外键约束(MySQL将选择半随机名称):

代码语言:javascript
运行
复制
ALTER TABLE student_info
  ADD FOREIGN KEY (staff_id)
  REFERENCES staff_incharge (staff_id) ;

命名外键约束:

代码语言:javascript
运行
复制
ALTER TABLE student_info
  ADD CONSTRAINT staff_incharge__student_info__FK      -- name of your choice
  FOREIGN KEY (staff_id)
  REFERENCES staff_incharge (staff_id) ;
票数 0
EN

Stack Overflow用户

发布于 2013-09-24 09:09:28

这样啊,原来是这么回事!问题是,我为IDstaff_id提供了不同的默认值。主要是确保外键和引用列具有相同的数据类型、长度、属性、默认值和排序规则。

这些联系有助于:

  • http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
  • http://forums.mysql.com/read.php?22,19755,499517
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18973890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档