Задать вопрос

mysql автоинкремент

Добрый день.
Вопрос, как работает автоинкримент в mysql.
Если я создам две БД на разных машинах с табичкой A и полями id, name например и прокрыжу поле id как автоинкремент.
То при асинхронном но идентичном итоговом количестве вставленных данных я получу одинаковые таблицы по кортежам id,name?

Задаю вопрос потому что работаю с Oracle DB и там если в последовательности не задать явного соблюдения очередности то в таком случаи в таблицах можно будет получить на одной БД [(1,'name1'),(2,'name2')] а в другой [(1,'name1'),(21,'name2')],
  • Вопрос задан
  • 5148 просмотров
Подписаться 4 Оценить Комментировать
Решения вопроса 1
Wott
@Wott
>Oracle DB и там если в последовательности не задать явного соблюдения очередности
В смысле ORDER для SEQUENCE?
Нет, тут такой фишки нет и поле всегда прибавляется последовательно

Если взять два разных сервера, с одинаковыми схемами и в одинаковой последовательности insert-ить строки, то итоговые поля auto_increment будут идентичны. По крайней мере несколько раз так делал ( например восстанавливал по логам состояние или переносил данные с рабочего на девелоперский сервера или наоборот ) и получал идентичные таблицы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
la0
@la0
Да, получите идентичные(если все элементы наборе id name идентичны и порядок идентичен).
Но если вам надо этого наоборот избежать, то dev.mysql.com/doc/refman/5.1/en/replication-options-master.html#sysvar_auto_increment_increment
на A: auto_increment_increment=2 auto_increment_offset=1;
на B: auto_increment_increment=2 auto_increment_offset=2;
и будете иметь на одном четные, а на другом нечётные AI поля
Ответ написан
Комментировать
@Ualde
Будут одинаковые таблицы.
Ответ написан
Комментировать
dali
@dali
Не забудьте про транзакции, если вы используете транзакцию при записи в таблику, то автоинкрементное значение id уже зарезервировано за транзакцией, потом идет roll back, будет пропуск между id.
Ответ написан
Комментировать
@doranych
У вас будут разные id при асинхронном добавлении в таблицы, если конечно вы насильно не укажите допустим во второй таблице id вставляемой записи
Ответ написан
Комментировать
oENDark
@oENDark
Добавляйте в одну таблицу потом берите lastinsertid и добавляйте во вторую без auto_incremenet
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 дек. 2024, в 13:01
50000 руб./за проект
22 дек. 2024, в 10:44
15000 руб./за проект
22 дек. 2024, в 10:12
10000 руб./за проект