Как лучше всего обеспечить ссылочную целостность реплицированной базы данных?

Используя SQL SERVER 2005, у меня есть пара вопросов о репликации и ссылочной целостности.

1) Обрабатывает ли репликация ссылочную целостность?

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

Спасибо


person amrit    schedule 20.02.2012    source источник
comment
+1 Достойный вопрос, не знаю, почему за него проголосовали   -  person Andomar    schedule 20.02.2012
comment
Перекрестная публикация: dba.stackexchange.com/q/13510/5203   -  person GSerg    schedule 20.12.2017


Ответы (2)


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

person Barry King    schedule 20.02.2012

Использование репликации не гарантирует ссылочной целостности.

Ссылочная целостность поддерживается, когда строка удаляется из основной таблицы, а запись все еще существует в ее таблице внешнего ключа, где она повторно используется.

Использование первичного ключа и внешнего ключа гарантирует это, и только для дополнительной информации есть такая команда, как «ON DELETE CASCADE», которая удалит ключ из первичного, если он будет удален из внешнего ключа.

person Ruzbeh Irani    schedule 20.02.2012
comment
Я понимаю ссылочную целостность в исходной БД. Как вы поддерживаете/гарантируете, что записи вставляются/удаляются в БД репликации с применением правил ссылочной целостности? - person amrit; 20.02.2012