我正在尝试创建健康管理数据库,我收到此错误。有什么问题?
-- table glocation
CREATE TABLE `MOH`.`glocation` (
`street` VARCHAR(20) NOT NULL,
`city` VARCHAR(20) NOT NULL,
`state` VARCHAR(20) NOT NULL,
`geolocation` INT(8),
PRIMARY KEY (`street`, `city`, `state`));
-- table patient
CREATE TABLE `MOH`.`patient` (
`PID` INT(6) zerofill UNSIGNED NOT NULL AUTO_INCREMENT,
`first_name` VARCHAR(45) NOT NULL,
`last_name` VARCHAR(45) NOT NULL,
`sex` VARCHAR(10),
`b_insurance` VARCHAR(45),
`s_insurance` VARCHAR(45),
`education` VARCHAR(20),
`job` VARCHAR(20),
`street` VARCHAR(20),
`city` VARCHAR(20),
`state` VARCHAR(20),
`date_of_birth` date,
`license` boolean,
PRIMARY KEY (`PID`),
CONSTRAINT `street`
FOREIGN KEY (`street`)
REFERENCES `MOH`.`glocation` (`street`),
CONSTRAINT `city`
FOREIGN KEY (`city`)
REFERENCES `MOH`.`glocation` (`city`),
CONSTRAINT `state`
FOREIGN KEY (`state`)
REFERENCES `MOH`.`glocation` (`state`));
错误是:
CREATE TABLE
MOH
。patient
(...)错误代码:1215。无法添加 外键约束
答案 0 :(得分:1)
我认为这是因为您尝试单独制作patient.street
,patient.city
和patient.state
个外键,但它们不是 glocation
中的主键主键。
尝试将组合列设为单个外键,如
CONSTRAINT location
FOREIGN KEY (street, city, state)
REFERENCES glocation (street, city, state)
我认为无论如何在你的项目环境中更有意义。 (您尝试定义的三个独立约束允许使用'El Camino Real', 'New York City', 'Florida'
之类的无意义组合,只要每个值值独立存在于glocation
中。)< / p>