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