使用非主键的列创建外键

时间:2017-12-27 01:53:26

标签: sql foreign-keys mariadb

我在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

我想使用表格将列限制为一组值,但它似乎没有成功,就像我想要的那样......

1 个答案:

答案 0 :(得分:0)

考虑以下观察结果:

  • CREATE foo1 ...CREATE foo2 ...,它不是有效的语法。看到 CREATE TABLE
  • MariaDB接受REFERENCESALTER TABLE语句中的CREATE TABLE子句,但该语法不执行任何操作。 MariaDB只是解析它而不返回任何错误或警告,以便与其他DBMS兼容。见Foreign Keys
  • 引用的列必须是PRIMARY KEY或UNIQUE索引。见Foreign Keys