Добрый день.
Вопрос, как работает автоинкримент в mysql.
Если я создам две БД на разных машинах с табичкой A и полями id, name например и прокрыжу поле id как автоинкремент.
То при асинхронном но идентичном итоговом количестве вставленных данных я получу одинаковые таблицы по кортежам id,name?
Задаю вопрос потому что работаю с Oracle DB и там если в последовательности не задать явного соблюдения очередности то в таком случаи в таблицах можно будет получить на одной БД [(1,'name1'),(2,'name2')] а в другой [(1,'name1'),(21,'name2')],
>Oracle DB и там если в последовательности не задать явного соблюдения очередности
В смысле ORDER для SEQUENCE?
Нет, тут такой фишки нет и поле всегда прибавляется последовательно
Если взять два разных сервера, с одинаковыми схемами и в одинаковой последовательности insert-ить строки, то итоговые поля auto_increment будут идентичны. По крайней мере несколько раз так делал ( например восстанавливал по логам состояние или переносил данные с рабочего на девелоперский сервера или наоборот ) и получал идентичные таблицы.
Да, получите идентичные(если все элементы наборе 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 поля
Не забудьте про транзакции, если вы используете транзакцию при записи в таблику, то автоинкрементное значение id уже зарезервировано за транзакцией, потом идет roll back, будет пропуск между id.