mysql - 是否可以向 mysql 中的组合键添加外键约束?

标签 mysql sql phpmyadmin

所以我有两张 table 。

主题_时间表:

CREATE TABLE IF NOT EXISTS `subject_schedule` (
  `subject` varchar(10) NOT NULL,
  `schedule_id` int(11) NOT NULL,
  `id` int(11) NOT NULL,
  PRIMARY KEY (`subject`,`schedule_id`),
  KEY `schedule_id` (`schedule_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

和预约:

CREATE TABLE IF NOT EXISTS `appointment` (
  `work_plan` varchar(1000) DEFAULT NULL,
  `date` date DEFAULT NULL,
  `homework_given` varchar(1000) DEFAULT NULL,
  `tutor_comments` varchar(1000) DEFAULT NULL,
  `admin_comments` varchar(1000) DEFAULT NULL,
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `schedule_id` int(11) NOT NULL,
  `attended` tinyint(1) NOT NULL DEFAULT '1',
  `arrival_time` time DEFAULT NULL,
  `departure_time` time DEFAULT NULL,
  `homework_completed` tinyint(1) NOT NULL DEFAULT '0',
  `subject` varchar(10) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `schedule_id` (`schedule_id`),
  KEY `subject` (`subject`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10004 ;

我想创建一个外键来引用约会中的复合键。我尝试过:

ALTER TABLE 'appointment'
ADD CONSTRAINT 'appointment_fk' FOREIGN KEY (`schedule_id`, `subject`) 
REFERENCES 'subject_schedule' ('schedule_id', 'subject');

但它在 PhpMyAdmin 中返回错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''appointment' ADD CONSTRAINT 'appointment_fk' FOREIGN KEY (schedule_id, `su' at line 1

我做错了什么? 仅使用 id 作为主键并引用它而不是使用复合键更好吗?

最佳答案

columnNames 不应该用单引号引起来,因为它将被转换为字符串(不再是列)

ALTER TABLE appointment
ADD CONSTRAINT appointment_fk FOREIGN KEY (`schedule_id`, `subject`) 
REFERENCES subject_schedule (schedule_id, subject);

关于mysql - 是否可以向 mysql 中的组合键添加外键约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14329692/

相关文章:

php - 使用 PHP 和 OOP 方法从 MySQL 生成 CSV 文件(mysqli->connect 等)

mysql - 用于社交网络应用程序的 MyISAM 或 InnoDB

mysql - phpMyAdmin 导出功能如何工作?

mysql - 查找空闲时间

MySQL查询返回非唯一列组合

PHP:删除前确认框

php - 比较一个数组中的数组值 PHP

mysql - 如何将每天的 unix 时间分组?

php - 想要降级 phpMyAdmin,但不知道什么版本

php - 更改二维数组以实现 Codeigniter 兼容性批量插入