数据库外键可以为空
来源:互联网 发布:jquery ajax 返回json 编辑:程序博客网 时间:2024/05/16 04:40
一、
关于数据库的外键,以前我一直以为不允许为空的,今天看到一个项目中使用了空的数据库外键,很惊讶,后来才发现是自己以前错误了。数据库外键是可以为空的。
不过为空的数据跟与之相关联的表就没有关系了。一般不采用。
二、
按照数据库理论上说的应该是外键可以为空,为空表示其值还没有确定;如果不为空,刚必须为主键相同。举个例子:有两张表,系信息表,学生信息表,学生信息表中的系号为外键,此时外键可以为空,表示该学生还没有确定所在的系;如果系号不为空则系号必须在系信息表中存在!
外键不能为空只是SQLSERVER等一些数据库系统的特殊规则而已!
三、
外键可以为空的,一个表的关键的标识是主键,外键是否为空不影响表的结构及数据库设计概念的.外键只起个关联表的作用.
至于书上提到的外键不能为空是对的,但实践中在数据库里没有创建关联时,好像是外键,实则不是外键.
虽然定义了关系
但是属于未强制关系,这种关系的外键约束被禁用。所以楼主定义无实际意义。所以可以插入null数据
外键的值不允许参照相应主表中不存在的主键值,或者外键为空值.
不知道楼主怎么理解的这句话,我理解为外键可以为空
外键的值或者参照相应主表中存在的主键值,或者外键为空值
四、
联机丛书中准确的解释是
如果在 FOREIGN KEY 约束的列中输入非 NULL值,则此值必须在被引用的列中存在,否则将返回违反外键约束的错误信息。
也就是说外键中可以有null,除非外键列定义了notnull
五、
外键当然可以为空了
看看你引用的书上的话
"外键的值不允许参照相应主表中不存在的主键值,或者外键为空值. "
后面不是说了 "或者外键为空值",不就是说外键可以为空的吗
外键要有值的话必须是主表中存在的主键值,可不就是空值
外键可以为空值,但如果有值的话一定是你参照的那个主表中的主键值.
不过为空的数据跟与之相关联的表就没有关系了。一般不采用。
二、
外键不能为空只是SQLSERVER等一些数据库系统的特殊规则而已!
三、
至于书上提到的外键不能为空是对的,但实践中在数据库里没有创建关联时,好像是外键,实则不是外键.
但是属于未强制关系,这种关系的外键约束被禁用。所以楼主定义无实际意义。所以可以插入null数据
不知道楼主怎么理解的这句话,我理解为外键可以为空
外键的值或者参照相应主表中存在的主键值,或者外键为空值
四、
如果在 FOREIGN KEY 约束的列中输入非 NULL值,则此值必须在被引用的列中存在,否则将返回违反外键约束的错误信息。
五、
0 0
- 数据库外键可以为空
- 数据库外键可以为空
- oracle数据库表的外键可以为空
- 外键可以为空
- unique的数据项可以为空,外键的值也可以为空
- 外键为空
- 可以为空的类型
- 解决Java中int不能为空而Oracle数据库中Number可以的问题
- System.Nullable<T> int? 数据库中的int类型可以为空 在C# 中 的处理
- 解决Java中int不能为空而Oracle数据库中Number可以的问题
- 解决Java中int不能为空而Oracle数据库中Number可以的问题
- 判断为空时,可以抛出异常
- EF框架,字段可以为空
- 数据库值为空判断
- 故障:hibernate操作数据库时,可以正常添加数据库,但是使用下面的语句时,报错:Query为空。
- 可以为空值、可以删除显示日期的DateTimePicker
- sqlserver 修改表字段默认值,或原字段不能为空,修改为可以为空
- MySQL问题,设置为不允许为空的字段却可以为空
- MyBatis_输入映射
- Android活动中的启动模式
- BZOJ 1221: [HNOI2001] 软件开发|费用流
- Git简明教程
- C开源hash代码uthash的用法总结
- 数据库外键可以为空
- 深入分析JavaWeb Item46 -- Struts2数据校验与国际化
- linux空格符号
- Servlet&JSP学习笔记--导航
- 可转债两个关键指标解读以及转股注意事项
- 谈谈使用promise时候的一些反模式
- 重拾编程之路--leetcode(java)-排序数组范围
- Nginx下实现pathinfo及ThinkPHP的URL Rewrite模式支持
- 算法洗脑系列(8篇)——第四篇 枚举思想