Что значит режим MySQL NO_AUTO_VALUE_ON_ZERO
?
SET SQL_MODE='NO_AUTO_VALUE_ON_ZERO'
Какие настройки изменятся в базе данных после установки этого режима?
P.S. документацию читала, но на английском, и поняла очень смутно. Будет здорово, если будут ссылки на русскую документацию...
create table test_ai(id int auto_increment primary key, val int) engine=innodb;
insert into test_ai (id, val) values (0, 1);
Вот какой результат будет в поле id и зависит от этого sql_mode
:
Без NO_AUTO_VALUE_ON_ZERO
будет сгенерировано следующее значение auto_increment. С установленным флагом NO_AUTO_VALUE_ON_ZERO
будет записан именно 0.
mysql> SET SQL_MODE='';
Query OK, 0 rows affected (0,00 sec)
mysql> insert into test_ai (id, val) values (0, 1);
Query OK, 1 row affected (0,01 sec)
mysql> SET SQL_MODE='NO_AUTO_VALUE_ON_ZERO';
Query OK, 0 rows affected (0,00 sec)
mysql> insert into test_ai (id, val) values (0, 2);
Query OK, 1 row affected (0,01 sec)
mysql> select * from test_ai;
+----+------+
| id | val |
+----+------+
| 0 | 2 |
| 1 | 1 |
+----+------+
2 rows in set (0,00 sec)
mysql> insert into test_ai (id, val) values (0, 3);
ERROR 1062 (23000): Duplicate entry '0' for key 'PRIMARY'
На запросы такого вида настройка не влияет:
insert into test_ai (id, val) values (NULL, 1);
insert into test_ai (val) values (1);
Общий смысл: не надо полю auto_increment вообще пытаться присваивать явные значения.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте / Есть ли хорошие и ясный учебник? Или , по крайней мере , Кто-нибудь можете помочь мне с говоря мне , где я должен начать с создать...
Есть 3 таблицы: посты ( post ) теги ( tag ) связь тегов и постов ( post_tag )