Estou procurando uma maneira de desativar temporariamente todas as restrições do banco de dados (por exemplo, relacionamentos de tabela).
Preciso copiar (usando INSERTs) as tabelas de um banco de dados para outro banco de dados. Eu sei que posso conseguir isso executando comandos na ordem correta (para não romper relacionamentos).
Mas seria mais fácil se eu pudesse desativar a verificação de restrições temporariamente e ligá-la novamente após o término da operação.
Isso é possível?
sql-server
esql-server-2005
. O link que forneci é para o SQL Server, mas você pode fazer o mesmo no Oracle - veja aqui e aqui . Você também pode fazê-lo no PostgreSQL .Respostas:
Você pode desativar as restrições FK e CHECK
apenas no SQL 2005+. Consulte ALTER TABLEou
Chaves primárias e restrições exclusivas não podem ser desabilitadas, mas isso deve ser bom se eu entendi corretamente.
fonte
fonte
check check
que muitas pessoas esquecem !!E, se você deseja verificar se você NÃO rompeu seus relacionamentos e apresentou órfãos, depois de rearmar seus cheques, ou seja,
ou
então você pode voltar e fazer uma atualização em qualquer coluna marcada, como:
E quaisquer erros nesse ponto ocorrerão devido à falha em atender às restrições.
fonte
Na verdade, você pode desativar todas as restrições do banco de dados em um único comando SQL e reativá-las chamando outro comando único. Vejo:
Atualmente, estou trabalhando com o SQL Server 2005, mas tenho quase certeza de que essa abordagem também funcionou com o SQL 2000
fonte
Desabilitando e habilitando todas as chaves estrangeiras
consulte Desativando restrições e disparadores da MSDN Magazine
fonte