是的,您只能在值不为NULL时强制执行约束。可以使用以下示例轻松测试它:

CREATE DATABASE t;

USE t;

CREATE TABLE parent (id INT NOT NULL,

PRIMARY KEY (id)

) ENGINE=INNODB;

CREATE TABLE child (id INT NULL,

parent_id INT NULL,

FOREIGN KEY (parent_id) REFERENCES parent(id)

) ENGINE=INNODB;

INSERT INTO child (id, parent_id) VALUES (1, NULL);

-- Query OK, 1 row affected (0.01 sec)

INSERT INTO child (id, parent_id) VALUES (2, 1);

-- ERROR 1452 (23000): Cannot add or update a child row: a foreign key

-- constraint fails (`t/child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY

-- (`parent_id`) REFERENCES `parent` (`id`))

第一次插入将通过,因为我们在中插入了NULL parent_id。由于外键约束,第二次插入失败,因为我们试图插入parent表中不存在的值。

mysql外键可以是空吗_带外键的表列可以为NULL吗?相关推荐

  1. mysql主键能否有实际意义_数据库主键不应该具有任何业务意义

    关系数据库学的最重要的一个理论是:不要给关键字赋予任何业余意义.假如关键字具有了业务意义,当用户决定业务含义,也许他们想要为关键字增加几位数字或者把数字改为字母,那么就必须修改相关的关键字.一个表中的 ...

  2. mysql中decimal不能为空吗_程序员,知道Mysql中事务ACID的原理吗?

    点击上方"linkoffer", 选择关注公众号高薪职位第一时间送达 引言 照例,我们先来一个场景~ 面试官:"知道事务的四大特性么?" 你:"懂,A ...

  3. mysql在linux只有用空密码_在Linux服务器上配置phpMyAdmin--允许空密码

    使用php和mysql开发网站的话,phpmyadmin是一个非常友好的mysql管理工具,并且免费开源,国内很多虚拟主机都自带这样的管理工具,配置很简单,接下来在linux服务器上配置phpmyad ...

  4. python定义二维空数组_带有空第二维的数组/向量的Python / numpy问题

    虽然您可以重新整形数组,并使用[:,np.newaxis]添加维度,但您应该熟悉最基本的嵌套括号或列表符号.请注意它与显示器的匹配程度. In [230]: np.array([[0],[6]]) O ...

  5. Mysql查询表中每行数据大小_计算数据库中各个表的数据量和每行记录所占用空间的脚本-转载来自(博客园 桦仔)...

    本文出处: 感谢桦仔 的分享精神! 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tablespaceinfo ( nameinfo  ...

  6. mysql中avg函数如果有空值_对于 AVG 函数,如果列中所有行的值都是 null,那么 AVG 函数返回的值是( )...

    [判断题]偶联剂是具有某些特定基团的化合物,它能通过化学和物理的作用将两种性质差异很大,原本不易结合的材料较牢固地结合起来 [多选题]滑石粉的片状结构使得滑石粉填充塑料的某些性能得到较大的改善,可提高 ...

  7. 过椭圆外一点引两条切线方程_椭圆外一点引椭圆的两条切线互相垂直问题巧解 -...

    椭圆外一点引椭圆的两条切线互相垂直问题巧解 x2y2 问题: 已知椭圆c: 2?2?1(a?b?0),点P(x0 ,y0)是椭圆外一点,且由点P引椭 ab圆的两条切线互相垂直,则点P(x0,y0)的轨 ...

  8. 过椭圆外一点引两条切线方程_椭圆外一点引椭圆的两条切线互相垂直问题巧解...

    椭圆外一点引椭圆的两条切线互相垂直问题巧解 1椭圆外一点引椭圆的两条切线互相垂直问题巧解 问题: 已知椭圆 c: ,点 P (x 0 , y 0 )是椭圆外一点,且由点 P 引椭 ) 0 ( 1 2 ...

  9. mysql存储过程参数与属性同名问题_存储过程中参数与表名相同的二义性问题

    写了一个很简单的存储过程,发现执行了,但是表的数据没有改变,存储过程如下: procedure sp_upd_update_jsgl(mc in varchar2,--名称 sm in varchar ...

最新文章

  1. Python中单线程、多线程与多进程的效率对比实验
  2. java 线程池技术_Java线程池技术以及实现
  3. 解决篇:wampserver访问your projects项目,路径不加localhost前缀 - 解决篇
  4. html图片从中间淡入淡出效果,CSS中的多个图像交叉淡入淡出-无需(java)脚本
  5. 黑马程序员—————— 随机访问流
  6. 一个批量转换文件编码的python脚本
  7. mit的java教材_关于学习MIT6.828操作系统课程lab1记录
  8. 好用的 身份证识别OCR API
  9. 25.jsp之生成二维码
  10. 防华为手表太空人主题界面 html5 代码实现
  11. 在线电子名片html,HTML5 个人信息卡片(电子名片)模板
  12. 读书随笔《36岁, 半熟人生》
  13. 天津大学仁爱学院计算机科学与技术学费,天津大学仁爱学院计算机科学与技术专业2016年在山西理科高考录取最低分数线...
  14. element ui自定义图标
  15. 如何自己编写一个交通仿真软件(二)原野。
  16. 搜索之下的在线教育,逆商业周期而动?
  17. BOXI3 SDK 检索所有使用了某个universe object的报表
  18. docker 镜像制作
  19. 使用飞信api接口实现短信发送(只能发送好友)
  20. 物联网平台-工业4.0应用程序的边缘处理

热门文章

  1. pytorch 与numpy 部分操作的对应关系
  2. 离线环境安装dotnet framework nuget包
  3. Select的onchange事件
  4. UVa 1292 - Strategic game
  5. 2010伊始就这么忙
  6. 三分钟轻松了解Spring框架基础知识
  7. 2017/12/29
  8. 张高兴的 Xamarin.Android 学习笔记:(二)“Hello World”
  9. php -- 取日期
  10. placeholder在某些浏览器下不垂直居中问题