MySQL - TRUNCATE em tabelas com CONSTRAINT de chave estrangeira
Na fase de desenvolvimento e testes é muito comum alterar as propriedades de suas tabelas e preenche-las com informações.
Porém chega um momento que queremos resetar tudo para colocar nosso banco em produção e para isso é sempre bom dar um TRUNCATE nas tabelas, a fim de zera-las, tanto na questão dos dados quanto dos incrementadores (AUTO_INCREMENT).
Dependendo de como seu banco foi modelado podemos ver frustradas estas tentativas. No caso de tabelas com CONSTRAINTS nas chaves estrangeiras simplesmente o MySQL não vai obedecer ao seu comando TRUNCATE.
Então o que fazer?
Uma solução simples é setar a checagem das CONSTRAINTS para false, truncar a tabela e depois voltar a checagem.
O procedimento para isto é bem simeples:
É isso ai.
Porém chega um momento que queremos resetar tudo para colocar nosso banco em produção e para isso é sempre bom dar um TRUNCATE nas tabelas, a fim de zera-las, tanto na questão dos dados quanto dos incrementadores (AUTO_INCREMENT).
Dependendo de como seu banco foi modelado podemos ver frustradas estas tentativas. No caso de tabelas com CONSTRAINTS nas chaves estrangeiras simplesmente o MySQL não vai obedecer ao seu comando TRUNCATE.
Então o que fazer?
Uma solução simples é setar a checagem das CONSTRAINTS para false, truncar a tabela e depois voltar a checagem.
O procedimento para isto é bem simeples:
- Execute uma query com o comando: "mysql> SET FOREIGN_KEY_CHECKS = 0;"
- Execute TRUNCATE em suas tabelas
- Execute uma query com o comando: "mysql> SET FOREIGN_KEY_CHECKS = 1;"
É isso ai.
Valeu cara, me ajudou bastante!
ResponderExcluirObrigado pelo comentário Filipe
ResponderExcluirAbraço
Poxa que ajuda formidável, sucesso aí com o blog...já add nos feeds!
ResponderExcluir