синхронизировать две таблицы из двух разных баз данных PostgreSQL - PullRequest
2 голосов
/ 31 мая 2011

У меня есть две таблицы из двух разных баз данных, и я хочу, чтобы функция php синхронизировала данные, чтобы таблица № 2 всегда могла проверить содержимое таблицы 1 и обновить ее информацию. У кого-нибудь есть один пример, как это сделать? Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 31 мая 2011

Ответ DS выполнит задание.

Вы также можете посмотреть, как настроить триггер после вставки / обновления и использовать dblink .Таким образом, они будут синхронизированы, и вам не придется беспокоиться об этом в PHP.

В качестве примечания, очень осторожно относитесь к тому, что может произойти при ошибках БД в любом случае.Вы можете потерять синхронизацию с любым решением при возникновении ошибок БД, поскольку транзакции будут автономными.

0 голосов
/ 14 апреля 2016

Создать триггер при вставке, обновлении, удалении. Когда вызывается триггерная процедура, сохраняются все сделанные в операции изменения (Insert, update или delete) в таблице базы данных (назовем это sync_table). Запустите некоторый скрипт, который будет копировать данные из sync_table в другую таблицу базы данных. sync_table будет хранить данные, которые были изменены, вставлены и удалены.

0 голосов
/ 31 мая 2011

этот пример будет соединяться с обеими базами данных, и для каждого из авторов первого БД обновит автора конечного БД с тем же идентификатором. Конечно, вы должны настроить любую необходимую проверку, поиск и другие детали перед выполнением и обновлением (или вставкой или заменой, если хотите), но это полностью зависит от того, что вы собираетесь делать:)

<?php

if (false !== ($con1 = pg_connect("your source connection string"))) {
  if (false !== ($con2 = pg_connect("your dest connection string"))) {
    if (false !== ($result = pg_query($con1, "SELECT id, author, email FROM authors"))) {
      while (false !== ($row = pg_fetch_assoc($result))) {
        pg_query($con2, "UPDATE authors SET email=".pg_escape_string($con2, $row['email']).
          'WHERE id='.pg_escape_string($con2, $row['id']));
      }
      pg_free_result($result);
    }
    pg_close($con2);
  }
  pg_close($con1);
}

?>

Надеюсь, это было полезно. Пожалуйста, не стесняйтесь задавать любые вопросы по этому поводу. Наслаждайтесь! :)

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