mysql对无效数据的约束
来源:互联网 发布:网络暴力人肉搜索案例 编辑:程序博客网 时间:2024/06/13 01:10
mysql5.0.2之前,mysql对值的验证并不严格,>=5.0.2后,兼容保留了原来的默认方式,也提供了可选择的验证行为。
倘若在不严格模式下进行值的插入,例如NULL插入NOT NULL列中,或将较大值插入,mysql会为这些列设置“最可能的值”,而不是
生成错误的信息而导致数据不能插入.
5.0.2之前mysql的处理方式:
1.试图插入数值数据类型范围之外的值的列,mysql服务器将保存0(最小的可能值)或最大的可能只
2.字符串则保存空串或尽可能的保存多的到列中
3.将不是数值类型的数据插入数值列中,mysql将设置为0
4.mysql并不对data和datetime列坚持,如果不在mysql日期类型存储的范围内,mysql用"0000-00-00"取代
5.将NUL值保存到NOT NULL的值的列,对于单行INSERT将会报错,而对于多行INSERT INTO或INSERT INTO...SELECT,mysql会
保存默认数据类型的隐含值,一般情况下:数值类型0,字符串'',日期'zero';
6.如果INSERT语句未指定列值,如果列定义明确有DEFAULT子句,mysql插入默认值,反之没有DEFAULT,mysql同5规则中隐含插入数据类型的隐含值
>=5.0.2,可以使用选择更严格的处理方式STRICT_TRANS_TABLES或STRICT_ALL_TABLESSQL
STRICT_TRANS_TABLES处理方式:
1.事务性存储引擎,在任何地方插入违法不合数据将导致语句执行失败并进行事务回滚。
2.非事务性引擎,如果错误出现在插入或更新的第一行,则语句执行失败,则表的记录未变动。而如果是第一行后则不会导致语句执行失败,
将调整插入的数据,并发出告警信息,
STRICT_ALL_TABLESSQL更严格模式,对于非事务性与STRICT_TRANS_TABLES不同,事务性的规则相同。STRICT_ALL_TABLESSQL
不管是不是首行后(第一行)出错,错误都会导致语句执行失败。但是这样会出现这样的问题:在出现错误之前的数据行能够正确的被执行后面的则因错误而终止。
为避免以上情况:我们可以选择单行插入或更新,但还是建议用应用程序进行数据类型的有效检验
- mysql对无效数据的约束
- MySQL的check约束无效怎么办?
- mysql数据库 check约束无效
- MySQL中CHECK约束无效
- mysql数据库 check约束无效
- Mysql中Check约束无效的原因以及解决方法
- 对有主外键约束表数据的操作
- MySQL 删除有外键约束的数据
- mysql如何处理无效的数据值
- Mysql里check约束无效怎么办?
- MySQL数据约束
- MySQL--数据约束
- mysql-(二)-数据约束
- mysql之数据约束
- MySQL数据约束
- MYSQL中数据约束
- 【Mysql】Navicat数据导出和Mysql唯一约束的坑
- MySQL中对三种约束的支持
- oracle 登录失败,是windows日志满了。。
- 树状控件增加tooltip
- 一些精简的tuning总结~ *转
- 决策树技术及当前研究方向
- 设计模式-结构型模式-职责链
- mysql对无效数据的约束
- 开源软件许可证
- Menu
- 神器VIM配置文件进阶v1.0beta
- GCC编译的背后
- /program files/microsoft visual studio/vc98/include/crtdbg.h(536) : error C2833: 'operator DEBUG_NEW ' is no
- android for pc
- 常用mysql 命令语句
- C#编写的远程屏幕监控