就从SQL开始吧。我很好地理解了外键的概念,但我正在努力学习如何实现它们的语法,阅读sqlite page只会给我带来更多的问题而不是答案。下面这两行有什么区别吗?
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)?
难道我们不应该将任何类型的亲和性(我想我使用的术语是正确的)绑定到外键,因为它应该只使用父键使用的任何内容?
我有更多的问题,但这是一个很好的开始。提前感谢您的帮助!
发布于 2013-09-15 01:05:44
两者之间的区别:
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格式不能满足需求。它不提供指定多个列的方法。
https://stackoverflow.com/questions/18804084
复制相似问题