MySQL 的 SQL-Mode
SQL Mode 常用来解决下面几类问题:
1、通过设置 SQL Mode ,可以完成不同严格程度的数据校验,有效地保障数据准确性。
2、通过设置 SQL Mode 为 ANSI 模式,来保证大多数 SQL 符合标准的 SQL 语法,这样应用在不同数据库之间进行迁移时,则不需要对业务 SQL 进行较大的修改。
3、在不同数据库之间进行数据迁移之前,通过设置 SQL Mode 可以使 MySQL 上的数据更方便地迁移到目标数据库中。
一、常用 SQL-Mode
PIPES_AS_CONCAT——该模式将“||”视为字符串连接操作符。
NO_BACKSLASH_ESCAPES——使反斜线成为普通字符。
ANSI——等同于 REAL_AS_FLOAT 、PIPES_AS_CONCAT、 ANSI_QUOTES、IGNORE_SPACE 和 ANSI 组合模式,这种模式使语法和行为更符合标准的SQL。
STRICT_TRANS_TABLES——适用于事务表和非事务表,它是严格模式,不允许非法日期,也不允许超过字段长度的值插入字段中,对于插入不正确的值给出错误而不是警告。
TRADITIONAL——等同于 STRICT_TRANS_TABLES、 STRICT_ALL_TALBES、NO_ZERO_IN_DATE、 NO_ZERO_DATE、 ERROR_FOR_DIVISION_BY_ZERO、TADITIONAL 和NO_AUTO_CREATE_USER 组合模式,所以它也是严格模式,对于插入不正确的值是给出错误而不是警告。可以应用在事务表和非事务表,用在事务表时,只要出现错误就会立即回滚
二、 SQL Mode 在与其他异构数据库之间数据迁移中的使用
1、DB2 —— PIPES_AS_CONCAT , ANSI_QUOTES , IGNORE_SPACE , NO_KEY_OPTIONS , NO_TABLE_OPTIONS , NO_FIELD_OPTIONS
2、MAXDB —— PIPES_AS_CONCAT , ANSI_QUOTES , IGNORE_SPACE , NO_KEY_OPTIONS , NO_TABLE_OPTIONS , NO_FIELD_OPTIONS , NO_AUTO_CREATE_USER
3、MSSQL —— PIPES_AS_CONCAT , ANSI_QUOTES , IGNORE_SPACE , NO_KEY_OPTIONS , NO_TABLE_OPTIONS , NO_FIELD_OPTIONS
4、ORACLE —— PIPES_AS_CONCAT , ANSI_QUOTES , IGNORE_SPACE , NO_KEY_OPTIONS , NO_TABLE_OPTIONS , NO_FIELD_OPTIONS , NO_AUTO_CREATE_USER
5、POSTGRESQL —— PIPES_AS_CONCAT , ANSI_QUOTES , IGNORE_SPACE , NO_KEY_OPTIONS , NO_TABLE_OPTIONS , NO_FIELD_OPTIONS