我有一个包含三列的通用查找表:id,type和value。
CREATE TABLE `lookup` (
`lookup_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`type` VARCHAR(50) NOT NULL,
`value` VARCHAR(50) NOT NULL,
PRIMARY KEY (`lookup_id`),
UNIQUE INDEX `lookup_id` (`lookup_id`, `type`),
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB;
我有另一张桌子
CREATE TABLE `foo` (
`foo_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`lookup_id` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (`foo_id`),
INDEX `foo_id` (`foo_id`),
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB;
我想从第二个表创建一个多列外键到查找表,该表引用lookup_id和lookup.type。但是,子表只有一个id列。类型是隐含的。我想创建一个外键约束,使类型显式。有可能这样做吗?
这样的事情,只有这不起作用。
CONSTRAINT `FK_lookup` FOREIGN KEY (`lookup_id`, 'foo_type') REFERENCES `lookup` (`lookup_id`, `type`),
(请注意,foo_type是字符串而不是列名)