Controlando restrições, identidades e gatilhos com NOT FOR REPLICATION

Em alguns casos, é preferível para a atividade de usuário em uma topologia de replicação ser tratada de forma diferente da atividade de agente. Por exemplo, se uma linha for inserida por um usuário no Publicador e essa inserção satisfizer uma restrição de verificação na tabela, talvez não seja necessário impor a mesma restrição quando a linha for inserida por um agente de replicação no Assinante. A opção NOT FOR REPLICATION permite que você especifique que os objetos do banco de dados seguintes, sejam tratados de forma diferente quando um agente de replicação efetuar uma operação:

  • Restrições de chave estrangeira

    A restrição de chave estrangeira não será imposta quando um agente de replicação efetuar uma operação de inserção, atualização ou exclusão.

  • Verificar restrições

    A restrição de verificação estrangeira não será imposta quando um agente de replicação efetuar uma operação de inserção, atualização ou exclusão.

  • Colunas de identidade

    O valor de coluna de identidade não é incrementado quando um agente de replicação executa uma operação de inserção.

  • Gatilhos

    O gatilho não será executado quando um agente de replicação efetuar uma operação de inserção, atualização ou exclusão.

Quando uma tabela for publicada, as opções de esquema controlam como serão criados objetos no banco de dados de assinatura. As opções de esquema padrão diferem por publicação. Quando as opções forem definidas para especificar que as restrições de chave estrangeira e de verificação são criadas no banco de dados de assinatura, a opção CHECK FOR NOT REPLICATION será configurada. A opção CHECK FOR NOT REPLICATION também é configurada ao replicar colunas de identidade em publicações de mesclagem e transacionais, que dão suporte às assinaturas atualizáveis. Para obter mais informações sobre a replicação de colunas de identidade, consulte Colunas de identidade de replicação.

Na maioria dos casos as configurações padrão são apropriadas, mas elas poderão ser alteradas se um aplicativo exigir comportamento diferente. A área principal a ser considerada é a dos gatilhos. Por exemplo, se você definir um gatilho de inserção com a opção de configuração NOT FOR REPLICATION, todas as inserções de usuários acionarão o gatilho, mas as inserções dos agentes de replicação não farão isso. Considere um gatilho que insere dados em uma tabela de rastreamento: quando o usuário insere originalmente a linha, convém que o gatilho seja acionado e insira uma linha na tabela de rastreamento, mas o gatilho não deverá ser acionado quando os dados forem replicados para o Assinante, porque isto resultará em uma linha desnecessária inserida na tabela de rastreamento.

Especificar a opção NOT FOR REPLICATION

A opção NOT FOR REPLICATION pode ser especificada das seguintes maneiras :