Как я могу скопировать изменения из одной таблицы в другую, избегая бесконечного цикла, в SQL? - PullRequest
0 голосов
/ 24 августа 2010

У меня есть две базы данных, A и B. В базе данных A у меня есть таблица X с 10 столбцами в ней.В базе данных B у меня есть таблица Y с 7 столбцами.4 столбца из этих таблиц совпадают, и когда одна таблица обновляет один или несколько из этих столбцов, мне нужна другая таблица для обновления этих столбцов.Как я могу это сделать?Репликация не будет работать, потому что структуры таблиц отличаются, и триггеры вставки / обновления могут создавать бесконечные циклы.

Ответы [ 3 ]

2 голосов
/ 24 августа 2010

Репликация отлично работает для таблиц с различными структурами, см. Фильтрация опубликованных данных .

Что касается триггеров, позволяющих избежать бесконечного цикла, вы использовали бы контекстную информацию, чтобы настроить текущее состояниев триггере «репликация», чтобы избежать циклов, см. Использование информации контекста сеанса :

  • в триггере, вы проверяете, говорит ли CONTEXT_INFO(), что вы ужев триггере.
    • если ДА, ничего не делать (возврат)
    • если НЕТ, SET CONTEXT INFO для отражения вашей операции
  • копировать данные
  • когда срабатывает триггер 'replica', он найдет вашу контекстную информацию и ничего не сделает
  • очистит контекстную информацию
  • return
1 голос
/ 24 августа 2010

Чтобы избежать циклов, ваши триггеры могут не обновлять данные, если значения равны?

0 голосов
/ 17 марта 2011

выберите * в NewTable из PastTable

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