我創建了兩個表,做了以下內容:爲什麼我可以用外鍵約束自由輸入值
表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的主鍵必須與學生中的d相匹配。然而,當我做以下
INSERT INTO dep (1,2);
該聲明完成沒有錯誤?學生表是空的,如何在參考主鍵時插入數據?
請幫忙,謝謝。
順便我也能夠自由地插入到學生甚至dep沒有相應的價值。你們認爲這是因爲MySQL與甲骨文?
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)
嗯,我能夠自由地插入隨機數的學生,你認爲它是因爲它是其他SQL比Orable? – eastboundr 2012-04-13 04:19:39
它無關,與它是SQL或Oracle。你怎麼能夠插入學生表?在創建外鍵約束之前還是之後?你肯定對student.d隨機值是不是在DEP表? – rikitikitik 2012-04-13 04:22:13