2013-07-28 9 views
1

Я создаю 3 базы данных в другом месте, которые не подключены к Интернету.Добавить master-detail Данные таблицы MySQL в другую базу данных

DB А главный офис БД При

DB Б Филиал 1 База данных

DB С дочернем офис 2 База данных

Каждый вечер мне нужно скопировать данные из таблицы транзакций из B & C в A. и копирование данных на B & C на следующее утро для синхронизации данных запаса.

таблица транзакций состоит из 2 таблиц

1. капитан сделки

| ID | TRX_NUMBER | DATE | CUSTOMER_ID |

2. сделка-подробности

| ID | TRANSACTION_MASTER_ID | ITEM_ID | QTY | ЦЕНА | ИТОГИ |

транзакций details.TRANSACTION_MASTER_ID является внешним ключом к transaction-master.ID

проблемы является transaction-master.ID является автоматическое приращение значение, так как скопировать транзакций-мастер & обработки транзакций сведения данных в A без перерыва master-транзакция & информация о сделке иностранное ключевое значение?

Потому что, если в B моя таблица имеет значение 1 в качестве значения transaction-master.ID, тогда, когда я вставляю B-данные в A, возможно, что 1 уже используется и будет изменен на 2 (из-за автоматического увеличения) и вызовет внешний ключ по данным транзакции.TRANSACTION_MASTER_ID будет разорваться

Что такое наилучшая практика для решения этой проблемы?

РЕШЕНИЕ: я получил хорошее решение от канала MySQL на IRC, использование "auto_increment_offset" и "auto_increment_increment" на MySQL

Набор auto_increment_offset А: ​​1, B: 2 C: 3

Набор auto_increment_increment 3 на A, B, и C

Таким образом, первичный ключ никогда не будет одинаковым на каждой ветви

ответ

0

Я могу представить два простых способа:

  1. Не используйте автоматические приращения. Используйте, например, UUID. ИЛИ:

  2. Добавить еще одно поле в Transaction-master, siteId и сделать его частью составного ключа. Затем используйте Transaction_master_ID и siteId как внешний ключ по деталям транзакции.См th4 ответ на этот вопрос, чтобы увидеть, как это сделать: Multiple-column foreign key in MySQL?

+0

Ну, точка 1 совершенно верно, без автоматического приращения никаких проблем не возникает, но я уже строить свою базу данных и закончить код .. я получил другое решение, которое лучше для моего условия, это решение должно использовать «auto_increment_offset» и «auto_increment_increment» в MySQL – frozenmaiden

Смежные вопросы