字节流的博客

MySQL SQL MODE

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_FLOATPIPE_AS_CONCATANSI_QUOTESIGNORE_SPACEANSI 的组合,只有这种模式和行为更符合标准的 SQL 语法;
  • STRICT_TRANS_TABLES:适用于事务表和非事务表,他是严格模式,不允许非法日期,也不允许超过字符串长度插入字段中,对于插入不正确的值给出错误而不是警告;
  • TRADITIONAL:等同于 STRICT_TRANS_TABLESSTRICT_ALL_TABLESNO_ZERO_IN_DATENO_ZERO_DATEERROR_FOR_DIVISION_BY_ZEROTRADITIONALNO_AUTO_CREATE_USER 组合模式,所以他也是严格模式,对于插入不正确的值给出错误而不是警告,并且可以出现在事务表中,在事务表中出现错误立即回滚;
Thanks! 😊