带有文本引用的外键约束

时间:2015-01-15 14:45:12

标签: mysql foreign-keys innodb mariadb

我有一个包含三列的通用查找表: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是字符串而不是列名)

0 个答案:

没有答案