我有这样的:如果我有一个复杂的主键,是否有可能仅为其中的一列创建外键?
ID1 INTEGER PRI
ID2 INTEGER PRI
NAME VARCHAR
现在我需要:
ID1_REF INTEGER REFERENCE TO ID1
DESCRIPTION VARCHAR
左右,一列是指主键的一列,不列2。关系数据库中甚至有可能吗?
我有这样的:如果我有一个复杂的主键,是否有可能仅为其中的一列创建外键?
ID1 INTEGER PRI
ID2 INTEGER PRI
NAME VARCHAR
现在我需要:
ID1_REF INTEGER REFERENCE TO ID1
DESCRIPTION VARCHAR
左右,一列是指主键的一列,不列2。关系数据库中甚至有可能吗?
不,你不能。 外键必须引用被引用表中的主键或另一个超级键(唯一标识该表中该行的属性/列集合,无论这是否是实际声明的主键)。 也值得阅读Wikipedia article。
技术上你可以做任何你想做的事。但理论上这打破了主键和外键的主要概念。其实这只是一个术语问题。我不确定您的示例中的密钥是否可以称为外键。也许我们可以把它称为部分外键或其他东西。
MySQL将使用该列创建另一个索引并创建指向它的FK,它不会重用该部分的PK。 –
请详细说明一下。外键必须引用一个或多个唯一标识父记录的字段。如果您的父表需要两个字段来标识唯一性,那么当它引用的字段不唯一时,外键如何识别父记录? – Bueller