Поскольку первичный ключ увеличивается, многие люди думают, что понимают это!

MySQL Язык программирования

"Взаимосвязь между тремя типами вставки и самоинкрементными ключами"статья, в основном ответила"Автоинкремент четырехэтапных вопросов викторины«Друзья требований к негазированной воде размещают ответы, объясняются принципы и выполняется следующее заявление о копировании, это действительно сложно?
Голос за кадром: Вы, ребята, победили, выложу результаты казни.

Эксперимент 1. Тест начального значения самоинкрементного ключа

drop table t1;
create table t1(
id in__t not null
auto_increment_,
name varchar(10) unique,
count int default 0,
primary key(id),
index(name)
)engine=innodb;
insert into t1(name) values("zhangsan"),("lisi"),("wangwu");
select * from t1;_

Извините, идентификаторы трех вставленных записей:

A 0,1,2

B 1,2,3

C ничего из вышеперечисленного

**Ответ: Б
**

Ключ самоусиления начинается с 1, тест соответствует ""Взаимосвязь между тремя типами вставки и самоинкрементными ключами"серединапростая вставка(простая вставка). Простая вставка, которая может заранее знать количество вставленных строк, является самой простой при работе с ключами автоинкремента.

**
Эксперимент 2, тест с пакетной вставкой**

drop table t1,t2;
create table t1(
id int not null
auto_increment_,
name varchar(10) unique,
count int default 0,
primary key(id),
index(name)
)engine=innodb;
create table t2(
name varchar(10) unique
)engine=innodb;
insert into t2(name) values("x"),("y"),("z");
_insert into t1(name) select name from t2;
select * from t1;

Извините, результат выполнения вышеописанной команды insert...select... таков:

успешно вставлен

B не вставляет, ошибка ключевой ошибки автоматического увеличения

C ничего из вышеперечисленного

**Ответ: А
**

Прошивка прошла успешно, тест соответствует "Взаимосвязь между тремя типами вставки и самоинкрементными ключами"серединаОбъемная вставка(Массовая вставка). Массовая вставка, вы не можете заранее знать количество строк, которые будут вставлены в работе с ключами автоматического приращения, каждая вставляет строку, присваивает новую самооценку, в то время как параллелизм транзакции объема «может» возникает не та же транзакция непрерывна.

Голос за кадром: Может быть механизм оптимизации, и в будущем я напишу статьи.

**
Эксперимент 3. Смешанный тест на введение**

drop table t1;
create table t1(
id int not null
auto_increment_,
name varchar(10)_ unique_,
count int default 0,
primary key(id),
index(name)
)engine=innodb;
insert into t1(id, name) values(1, "shenjian");
__
insert into t1(id, name) values (111, "111"),(NULL, "abc"),(222, "222"),(NULL,"xyz");
select * from t1;_

Извините, идентификатор последнего оператора вставки после выполнения:

A 1,2,3,111,222

B 1,111,112,222,223

C не удалось вставить, ошибка ключа автоинкремента

Д ничего из перечисленного

**Ответ: Б
**

Вставьте успешно, самосовершенствование начинается от максимального значения от максимального значения, тест соответствует «»Взаимосвязь между тремя типами вставки и самоинкрементными ключами"серединасмешанная вставка(вставка смешанного режима).некоторые строки вставленыПри указании ключа автоинкремента генерация базы данных не требуется;некоторые строки вставленыКогда не указан ключ приращения (NULL), необходимо сгенерировать базу данных.

Эксперимент 4, вставьте ... в тест дубликатов ключей

Затем эксперимент 3, продолжайте выполнять следующую инструкцию:

insert _into t1(name)values("shenjian"),("aaa"),("bbb")
_

on duplicate key update count=100;

select * from t1;

Извините, идентификатор последнего оператора вставки после выполнения:

A 1,2,3,111,222,223,224,225

B 1,111,112,222,223,224,225,226

C 1,111,112,222,223,224,225

D 1,111,112,222,223,225,226

E Ничего из вышеперечисленного не верно

**Ответ: Д
**

Этот тест также соответствует "Взаимосвязь между тремя типами вставки и самоинкрементными ключами"серединасмешанная вставка(вставка смешанного режима).некоторые строки вставленыПо сути, это модификация, и базе данных не нужно генерировать ключ автоинкремента;некоторые строки вставленыНа самом деле вставьте, вам нужно сгенерировать ключ автоинкремента базы данных.

вставить … при обновлении дубликата ключа … Эта ситуация является наиболее сложной, и она может привести к тому, что самоинкремент, сгенерированный системой, будет недоступен на этапе обновления.

Озвучка, оригинальный текст официального сайта:

an INSERT followed by a UPDATE, where the allocated value for the AUTO_INCREMENT column may or may not be used during the update phase.

Обратитесь к сторонам, теперь вы довольны? С тобой все впорядке?

Голос за кадром: Версия MySQL — MySQL5.6.

Знай это, знай почему.

Путь архитектора- Делитесь техническими идеями

Статьи по Теме:

"Буферный пул (буферный пул), на этот раз я полностью понимаю!

"Буфер записи (буфер изменения), на этот раз я полностью понимаю!

Должность:

insert into t1(name)values("zhangsan"),("lisi"),("wangwu");

этот видпростая вставка, когда выполняются параллельные транзакции, самоувеличивающийся ключ может по-прежнему обеспечивать непрерывность, как это делается?

А:Блокировка детализации строк и взаимное исключение

Б:Блокировка детализации таблиц и взаимное исключение

С:Глобальный синглтон с автоинкрементом, реализующий взаимное исключение

Д:Детальная блокировка операторов SQL для реализации взаимного исключения

Э:Блокировка транзакций и взаимное исключение