zoukankan      html  css  js  c++  java
  • 向存在外键的表中插入数据时出错的原因以及插入外键为空的方法

    如下表

    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也不能插入,不写也不能插入,这样就无解了。后来的解决办法是先把外键删了,插完数据再添加上外键。建议在建表的时候先不添加外键约束,添加完数据后再添加外键

  • 相关阅读:
    Js--小笔记
    Android Gson解析
    java格式化数字、货币、金钱
    关于Edittext默认弹出软键盘为数字键
    生日星座自动匹配
    ANDROID STUDIO系列教程六--GRADLE多渠道打包
    框架,简化了代码的同时,也让我们慢慢变蠢
    Android开发实现高德地图定位
    onNewIntent调用时机
    EditText输入手机号自动带空格
  • 原文地址:https://www.cnblogs.com/Alitac/p/12575136.html
Copyright © 2011-2022 走看看