2

刚开始使用 SQL。我很好地理解外键的想法,但我正在尝试学习如何实现它们的语法,阅读sqlite 页面给我的问题多于答案。以下两行有什么区别吗?

CREATE TABLE child(x REFERENCES parent(id));
CREATE TABLE child(FOREIGN KEY x REFERENCES parent(id));

另外,据我了解,列是由“table.column”格式指定的,所以我想在上面输入“parent.id”,但似乎我所做的所有阅读都说“parent(id)”。两者有什么区别,为什么有时使用 parent.id 和 parent(id) 其他?

我们是否不应该将任何类型的亲和力(我认为我正确使用术语)绑定到外键,因为它应该只使用父键使用的任何内容?

我还有更多问题,但这是一个好的开始。提前感谢您的帮助!

4

1 回答 1

2

和...之间的不同:

CREATE TABLE child(x REFERENCES parent(id));

CREATE TABLE child(FOREIGN KEY x REFERENCES parent(id));

是第一个创建了一个表,其中包含一个名为的列x和一个外键约束。第二个创建一个没有任何列但只有一个外键约束的表。第二条语句应该失败,因为它引用了一个未知的列x

如果外键由多个列组成,则必须单独声明它。对于一列,

column1 references parent(column1)

工作正常。对于多列,您需要:

column1, column2, foreign key (column1, column2) references parent(column1, column2)

这也解释了为什么table.column格式不够。它不提供指定多列的方法。

于 2013-09-14T17:05:43.620 回答