如何添加外键?
我创建了一个名为 "temp1"
的表 - 它有一个名为 aa
的主键和一些其他字段。我还有另一个名为 temp2
的表。
我想向其添加名为 cc
的外键
。
我写了下面的代码,但它有一些错误:
create table temp1 (
aa int,
primary key(aa)
);
create table temp2 (
bb int,
cc int,
primary key(bb),
foreign key(cc) references temp1
);
..但是它有这个错误:
无法创建表“temp.temp2”
temp
是我的数据库名称。
Edit:
我将数据插入 aa(temp1 中的主键),但它不会导入到
cc(temp2 中的外键)中。
为什么?
我想如果在主键中插入数据,它会自动插入
外键!!如果这是真的?
I create a table with name "temp1"
- It has a primary key with name aa
and some other fields. And I have another table with name temp2
.
I want to add foreign key
to it with name cc
.
I wrote below code but it have some errors:
create table temp1 (
aa int,
primary key(aa)
);
create table temp2 (
bb int,
cc int,
primary key(bb),
foreign key(cc) references temp1
);
..But it have this error:
can't create table 'temp.temp2'
temp
is my database name.
Edit:
I insert data into aa(primary key in temp1) but it doesn't import into
cc(foreign key in temp2).
why?
I thought if insert data in primary key it automatic insert into
foreign key!!if this true?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您还需要指定要链接到的外部字段:
在创建表语句中或
之后。另外,您的表 temp1 的 SQL 是错误的 - 没有字段
a
来创建主键 - 我猜这只是您问题中的一个拼写错误。You need to specify the foreign field you're linking to as well:
within the create table statement, or
afterwards. As well, your SQL for table temp1 is faulty - there's no field
a
to create a primary key on - I'm guessing that's just a typo in your question.来自 MySQL 外键文档:
检查您的查询,这是正确的 - 您需要使用:
当创建外键约束时,您需要指定外键在父表中关联的列。 SQL 不假设您需要主键列,因为可能还有其他列。
From the MySQL foreign key documentation:
Reviewing your query, that is correct - you need to use:
When making a foreign key constraint, you need to specify the column the foreign key relates to in the parent table. SQL doesn't assume you want the primary key column, because there could be others.
您的代码是有效的标准 SQL-92 语法。
您可以使用在线 Mimer SQL-92 验证器 对此进行测试。
您可以通过阅读 SQL-92 规范 11.8“引用约束定义”2b) 来验证这一点:
遗憾的是,mySQL 不符合 SQL-92,并且似乎需要参考列列表。
Your code is valid Standard SQL-92 syntax.
You can test this using the online Mimer SQL-92 Validator.
You can verify this by reading the SQL-92 spec, 11.8 "referential constraint definition", 2b):
Sadly, mySQL is not SQL-92 compliant and it seems the reference column list is required.