none
Delete de registros relacionados RRS feed

  • Pergunta

  • Olá pessoal,

    Eu estou precisando fazer uma limpeza em um banco em ambiente de desenvolvimento e quando tento apagar registros de uma tabela com o Delete From NomeTabela ocorre erro de FK pois existe registros relacionados em outra tabela.

    Eu saber se tem como eu forçar um Delete e se possível em cascata, mesmo que exista registros relacionados ele deixe apagar e se possível apagar os registros relacionados também, mas o principal é que ele deixe apagar o registro.

    terça-feira, 23 de junho de 2015 12:51

Respostas

  • Deleted
    • Marcado como Resposta Edmar Munhoz terça-feira, 30 de junho de 2015 14:46
    terça-feira, 23 de junho de 2015 13:27
  • Edmar,

    Não modifique sua "Chave Estrangeira" para exclusão em cascata através do "DELETE CASCADE". Se esta opção estiver habilitada você poderá causar problemas de desempenho em consultas e manutenções (INSERT, UPDATE e DELETE) que envolverem estas colunas.

    O melhor procedimento é realizar as exclusões na ordem da tabela "filho" para a tabela "pai" deste relacionamento.

    Desativar a(s) chave(s) estrangeira(s) abre uma possibilidade para falhas na integridade de dados, então esteja ciente dos problemas que podem causar à você e a todos que utilizam este banco de dados e execute este procedimento em um horário alternativo, onde "ninguém" da sua Equipe de Desenvolvimento possa manipular esses dados em paralelo.

    Segue o script T-SQL para desabilitar uma FK:

    ALTER TABLE TB_SuaTabelaPai
    NOCHECK CONSTRAINT FK_TB_PAI_TB_FILHO;
    GO


    Para maiores informações veja:

    https://technet.microsoft.com/en-us/library/aa933118(v=sql.80).aspx

    https://technet.microsoft.com/en-us/library/aa275865(v=sql.80).aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    • Marcado como Resposta Edmar Munhoz terça-feira, 30 de junho de 2015 14:46
    terça-feira, 23 de junho de 2015 18:57
    Moderador

Todas as Respostas

  • Deleted
    • Marcado como Resposta Edmar Munhoz terça-feira, 30 de junho de 2015 14:46
    terça-feira, 23 de junho de 2015 13:27
  • Edmar,

    Não modifique sua "Chave Estrangeira" para exclusão em cascata através do "DELETE CASCADE". Se esta opção estiver habilitada você poderá causar problemas de desempenho em consultas e manutenções (INSERT, UPDATE e DELETE) que envolverem estas colunas.

    O melhor procedimento é realizar as exclusões na ordem da tabela "filho" para a tabela "pai" deste relacionamento.

    Desativar a(s) chave(s) estrangeira(s) abre uma possibilidade para falhas na integridade de dados, então esteja ciente dos problemas que podem causar à você e a todos que utilizam este banco de dados e execute este procedimento em um horário alternativo, onde "ninguém" da sua Equipe de Desenvolvimento possa manipular esses dados em paralelo.

    Segue o script T-SQL para desabilitar uma FK:

    ALTER TABLE TB_SuaTabelaPai
    NOCHECK CONSTRAINT FK_TB_PAI_TB_FILHO;
    GO


    Para maiores informações veja:

    https://technet.microsoft.com/en-us/library/aa933118(v=sql.80).aspx

    https://technet.microsoft.com/en-us/library/aa275865(v=sql.80).aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    • Marcado como Resposta Edmar Munhoz terça-feira, 30 de junho de 2015 14:46
    terça-feira, 23 de junho de 2015 18:57
    Moderador