向存在外鍵的表中插入數據時出錯的原因以及插入外鍵為空的方法


如下表

CREATE TABLE Course(
	Cno VARCHAR(4) PRIMARY KEY,
	Cname VARCHAR(20) NOT NULL,
	Cpno VARCHAR(4),
	Ccredit INT,
	FOREIGN KEY(Cpno) REFERENCES Course(Cno)
);

創建一個表,表中有一個外鍵,這個外鍵指向自己的主鍵,在創建表的時候是被允許的,但是在插入數據的時候,我用正常的sql語句插入數據,但報錯了,如下

INSERT INTO course (cno,cname,ccredit) VALUES
	(1,'數據庫',5,4),
	(2,'數學',5,2),
	(4,'操作系統',1,3),
	(3,'信息系統',6,4),
	(5,'數據結構',7,4),
	(6,'數據處理',3,2),
	(7,'PASCAL語言',null,4);

這樣插入數據看似無任何問題,然鵝插入不進去,報錯提示外鍵沒有default,最后想了想,原因是
外鍵的數據來源於主鍵表里的數據,也就是說主鍵表里如果沒有這個數據外鍵表是插不進去的,你必須先在主鍵表插入進去了才能在外鍵表插入。主鍵表的主鍵字段不能重復哦。重復了也插不進的。

那我就可以先把其他的數據插進去,先不插入外鍵,這不就行了,然鵝,報錯了。原因我要插入的部分外鍵為空,但是寫成null也不能插入,不寫也不能插入,這樣就無解了。后來的解決辦法是先把外鍵刪了,插完數據再添加上外鍵。建議在建表的時候先不添加外鍵約束,添加完數據后再添加外鍵


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM