1
所以我有2張桌子。它可以添加一個外鍵約束到MySQL中的複合鍵?
subject_schedule:
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
- 您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用 附近'約會「正確的語法手動添加約束‘appointment_fk’FOREIGN KEY (schedule_id
,'蘇」在行1
我在做什麼錯? 只需要一個id作爲主鍵和參考,而不是使用複合鍵?
這並沒有幫助。仍然收到相同的錯誤 – user1975196
@ user1975196點擊sql小提琴鏈接 –
Thankyou它的工作!我只需更新我的一些記錄以符合約束條件。 – user1975196