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:


  1. Execute uma query com o comando: "mysql> SET FOREIGN_KEY_CHECKS = 0;" 
  2. Execute TRUNCATE em suas tabelas 
  3. Execute uma query com o comando: "mysql> SET FOREIGN_KEY_CHECKS = 1;"
Desta forma você consegue zerar suas tabelas e manter toda a integridade do banco.

 É isso ai.

Comentários

Postar um comentário

Postagens mais visitadas deste blog

MySQL - Completando quantidades fixas de caracteres com as funções LPAD() e RPAD()

MySQL - Clonando tabelas na linha de comando

PHP - Gerando arquivo em UTF-8 com fwrite() e utf8_encode()