首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试理解外键语法

尝试理解外键语法
EN

Stack Overflow用户
提问于 2013-09-15 00:50:25
回答 1查看 72关注 0票数 2

就从SQL开始吧。我很好地理解了外键的概念,但我正在努力学习如何实现它们的语法,阅读sqlite page只会给我带来更多的问题而不是答案。下面这两行有什么区别吗?

代码语言:javascript
运行
复制
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)?

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

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

EN

回答 1

Stack Overflow用户

发布于 2013-09-15 01:05:44

两者之间的区别:

代码语言:javascript
运行
复制
CREATE TABLE child(x REFERENCES parent(id));

代码语言:javascript
运行
复制
CREATE TABLE child(FOREIGN KEY x REFERENCES parent(id));

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

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

代码语言:javascript
运行
复制
column1 references parent(column1)

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

代码语言:javascript
运行
复制
column1, column2, foreign key (column1, column2) references parent(column1, column2)

这也解释了为什么table.column格式不能满足需求。它不提供指定多个列的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18804084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档