1. SQL MODE 可以解决的问题
- 通过设置 SQL MODE,可以完成不同程度的数据校验,有效地保障数据的准确性;
- 设置 SQL MODE 为
ANSI
,使之符合大多数数据库标准,便于数据库迁移;
2. 相关命令
- 查看默认SQL MODE:
SELECT @@SQL_MODE;
; - 设置SQL MODE:
SET SESSION | GLOBAL SQL_MODE='sql_mode_name{, sql_mode_name2, ...}';
【注意】本次连接并不生效,在下次连接的时候才生效;
3. 常用 SQL MODE
ANSI
: 等同于REAL_AS_FLOAT
、PIPE_AS_CONCAT
、ANSI_QUOTES
、IGNORE_SPACE
和ANSI
的组合,只有这种模式和行为更符合标准的 SQL 语法;STRICT_TRANS_TABLES
:适用于事务表和非事务表,他是严格模式,不允许非法日期,也不允许超过字符串长度插入字段中,对于插入不正确的值给出错误而不是警告;TRADITIONAL
:等同于STRICT_TRANS_TABLES
、STRICT_ALL_TABLES
、NO_ZERO_IN_DATE
、NO_ZERO_DATE
、ERROR_FOR_DIVISION_BY_ZERO
、TRADITIONAL
和NO_AUTO_CREATE_USER
组合模式,所以他也是严格模式,对于插入不正确的值给出错误而不是警告,并且可以出现在事务表中,在事务表中出现错误立即回滚;