0

我有两张桌子:

表 1:staff_incharge带有以下列 -First_namestaff_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 服务器版本相对应的手册,以student_info在第 1 行的“添加约束外键 (staff_id) 引用人员_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`)
) 
4

2 回答 2

0

我知道了!问题是我为ID和提供了不同的默认值staff_id。主要是确保外键和引用的列应该具有相同的数据类型、长度、属性、默认值、排序规则。

这些链接有帮助:

于 2013-09-24T09:09:28.427 回答
0

最少代码 - 没有显式命名外键约束(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-24T05:54:13.757 回答