Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como as restrições de chave estrangeira podem ser temporariamente desabilitadas usando o T-SQL?


Se você deseja desabilitar todas as restrições no banco de dados, basta executar este código:
-- disable all constraints
EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

Para ligá-los novamente, execute:(o print é opcional, claro, e está apenas listando as tabelas)
-- enable all constraints
exec sp_MSforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

Acho útil ao preencher dados de um banco de dados para outro. É uma abordagem muito melhor do que descartar restrições. Como você mencionou, é útil ao descartar todos os dados no banco de dados e repovoá-lo (digamos, no ambiente de teste).

Se você estiver excluindo todos os dados, essa solução pode ser útil.

Às vezes, também é útil desativar todos os gatilhos, você pode ver a solução completa aqui.