mysql> SET sql_mode='';

Query OK, 0 rows affected (0.00 sec)


mysql> CREATE TABLE t (i TINYINT);

Query OK, 0 rows affected (0.01 sec)


mysql> INSERT INTO t SET i = 128;

Query OK, 1 row affected, 1 warning (0.00 sec)


mysql> SELECT i FROM t;

+------+

| i |

+------+

| 127 |

+------+

1 row in set (0.00 sec)


Однако, условие переполнения происходит, если включен строгий режим:


mysql> SET sql_mode='STRICT_ALL_TABLES';

Query OK, 0 rows affected (0.00 sec)


mysql> CREATE TABLE t (i TINYINT);

Query OK, 0 rows affected (0.00 sec)


mysql> INSERT INTO t SET i = 128;

ERROR 1264 (22003): Out of range value adjusted for column 'i' at row 1


mysql> SELECT i FROM t;

Empty set (0.00 sec)


Пример 5: В строгом режиме и с настройкой ERROR_FOR_DIVISION_BY_ZERO деление на нуль вызывает ошибку, а не результат NULL.

В нестрогом режиме деление на нуль имеет результат NULL:


mysql> SET sql_mode='';

Query OK, 0 rows affected (0.01 sec)


mysql> CREATE TABLE t (i TINYINT);

Query OK, 0 rows affected (0.00 sec)


mysql> INSERT INTO t SET i = 1 / 0;

Query OK, 1 row affected (0.00 sec)




10 из 320