Распределение данных по разным базам данных из Delphi

Иногда возникает необходимость синхронно изменять данные одновременно в двух или более базах данных, которые кроме того могут находиться на разных серверах InterBase. Для этого в InterBase можно использовать распределенные транзакции на основе Two-Phase Commit (2PC). Однако такие транзакции доступны только посредством функций InterBase API, но не через BDE-SQL Link.

Решить подобную задачу из Delphi можно следующим образом:
Представим себе, что у нас есть две базы данных - D1 и D2. В них обоих есть таблицы с одинаковым именем T1 (поэтому для уточнения будем упоминать их как D1.T1 и D2.T1).

Заметьте, что события посылаются приложению на каждую вставку записи в таблицу D1.T1, поэтому приложение, копирующее данные из D1 в D2, может получить сразу "пакет" уведомлений . Это не является проблемой, т.к. будет скопирована не одна запись за одну операцию, а несколько, но все они гарантированно окажутся в базе данных D2.


(с) 1997 Epsylon Technologies