gpt4 book ai didi

mysql - 为什么我可以使用外键约束自由输入值

转载 作者:太空宇宙 更新时间:2023-11-03 10:22:13 25 4
gpt4 key购买 nike

我创建了两个表并执行了以下操作:

表1:(学生)

CREATE TABLE student(s int, n int, d int, PRIMARY KEY(s), FOREIGN KEY(d) REFERENCES dep(d));

表 2: (dep)

CREATE TABLE dep(d int, n int, PRIMARY KEY(d));

所以,如果我没理解错的话,d是表1的外键,它引用了部门的主键。因此,dep 的主键必须与students 中的d 相匹配。但是,当我执行以下操作时

INSERT INTO dep (1,2);

语句完成没有错误? students表是空的,引用主键怎么插入数据?

请帮忙,谢谢。

顺便说一句,即使 dep 没有相应的值,我也可以自由地插入到学生中。你们认为这是因为mysql vs. oracle吗?

mysql> select * from student;
+---+------+------+
| s | n | d |
+---+------+------+
| 5 | 5 | 5 |
+---+------+------+
1 row in set (0.00 sec)

mysql> select * from dep;
+---+------+
| d | n |
+---+------+
| 1 | 2 |
+---+------+
1 row in set (0.00 sec)

最佳答案

student 表有外键d,它是dep 表的主键。 student 表依赖于 dep 表。 dep 表对 student 表没有这种依赖性。约束是在 student 表上有一个值 d,它应该总是在 dep 表中。

向学生表中插入一条 d 值无效的记录会导致错误。

关于mysql - 为什么我可以使用外键约束自由输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10135103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com