使用非主键的列创建外键
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用非主键的列创建外键相关的知识,希望对你有一定的参考价值。
我在MariaDB中观察到一些奇怪的行为,我没有得到:
CREATE TABLE foo (id INT);
CREATE foo1 (
id INT,
FOREIGN KEY (id) REFERENCES foo(id));
-- doesn't compile
CREATE foo2 (
id INT REFERENCES foo(id));
-- compiles, but foo2(id) isn't a foreign key
我想使用一个表来将列限制为一组值,但它似乎没有成功,就像我想要它...
答案
考虑以下观察:
CREATE foo1 ...
和CREATE foo2 ...
,它不是一个有效的语法。见CREATE TABLE。- MariaDB接受
REFERENCES
和ALTER TABLE
语句中的CREATE TABLE
子句,但该语法不起作用。 MariaDB只是解析它而不返回任何错误或警告,以便与其他DBMS兼容。见Foreign Keys。 - 引用的列必须是PRIMARY KEY或UNIQUE索引。见Foreign Keys。
以上是关于使用非主键的列创建外键的主要内容,如果未能解决你的问题,请参考以下文章