今天學習SQL,涉及到了有外鍵的表新增數據的問題,心里有一個疑問:有外鍵的表,可以直接插入數據嗎?
答案是否定的,有外鍵,必須先在主表中添加數據,然后再添加附表數據,否則會提示約束錯誤。
自己把教材上的案例照着手敲一遍,加深印象。
以下是搜集網絡上的解釋,更加清晰明了。
有外鍵的情況應該先添加主表數據,再添加副表數據。
如:有以下兩張表
班級表:
1
2
3
4
|
CLASSID NAME
1 一班
2 二班
|
學生表:
1
2
3
4
5
6
7
|
SID NAME CLASSID
1 張三 1
2 李四 1
3 王五 2
|
其中學生表中的CLASSID是班級表CLASSID的外鍵。
現在要求在學生表中添加一條SID=4,NAME=趙六,CLASSID=3的數據,那么只能先在班級表中加入一條新數據。
insert into 班級表 values (3,'三班');
然后再在學生表中添加:
insert into 學生表 values (4,'趙六',3);
另外的方法
1、先主表插入數據,再表插入數據集
2、先禁用外鍵約束
ALTER TABLE 表名 NOCHECK CONSTRAINT 外鍵約束名
插入數據
再啟用約束
ALTER TABLE 表名 CHECK CONSTRAINT 外鍵約束名
主鍵是能確定一條記錄的唯一標識,比如,一條記錄包括身份正號,姓名,年齡。身份證號是唯一能確定你這個人的,其他都可能有重復,所以,身份證號是主鍵。
外鍵用於與另一張表的關聯。是能確定另一張表記錄的字段,用於保持數據的一致性。比如,A表中的一個字段,是B表的主鍵,那他就可以是A表的外鍵。