Как добавить второй инкремент MYSQL - PullRequest
0 голосов
/ 08 июня 2018

У меня есть таблица:

TABLE
--------------------------------------
Unique ID | Increment ID | value | 
--------------------------------------

Как сделать так, чтобы значение 'Increment ID' автоматически увеличивалось, если он видит, что уникальный идентификатор уже имеет значение.Например,

Table
--------------------------------------
Unique_ID | Increment_ID | value | 
=====================================
random1   | 1            | value1
random1   | 2            | value2
random2   | 1            | value3
random2   | 3            | value5
--------------------------------------

И если я отправлю ему строку:

INSERT INTO TABLE (Unique_ID,value) VALUES (random2,value6);

, и я хотел бы получить:

--------------------------------------
Unique_ID | Increment_ID | value  | 
=====================================
random1   | 1            | value1
random1   | 2            | value2 
random2   | 1            | value3 
random2   | 3            | value5 
random2   | 2            | value6 
--------------------------------------

может MYSQL /phpmyadmin даже это сделать?Или это должно быть сделано в PHP?Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Итак, вот способ сделать это:

Таблица MYSQL имеет в формате MyISAM.Для этого (в phpmyadmin) перейдите к таблице, затем перейдите на вкладку «Операции».В «Операциях» измените хранилище «Механизм хранилища» на MyISAM.Больше информации о: http://richardcummings.info/convert-myisam-to-innodb-using-phpmyadmin/

Теперь, чтобы увеличить его:

Перейдите на страницу «столбец» таблицы и сделайте ОБА первичными ключами «Unique_ID» и «Increment_ID».Затем установите для параметра «Increment_ID» значение «auto_increment».Больше информации на: https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html

Не уверен, что это ЛУЧШИЙ способ сделать это, но это, безусловно, A способ.

0 голосов
/ 08 июня 2018

MySQL поддерживает функцию автоинкремента на группу только для таблиц MyISAM.

Но это недостаточно веская причина для использования таблиц MyISAM.

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

Это означает, что вашей транзакции необходимо заблокировать таблицу от одновременных вставок.

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

Но механизм хранения на уровне строк, такой как InnoDB, не поддерживает его.Это будет препятствовать одновременным вставкам, и многие функции MySQL предназначены для одновременной работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...