Blog

Limpando uma tabela em Postgres e resetando o auto incremento

Bom dia.

Em algumas situações, como por exemplo implantações e testes, é necessário fazer o “reset” do banco de dados, ou de algumas tabelas,  para iniciar em ambiente de produção. Vou mostrar como limpar uma tabela e também resetar a chave primaria de banco de dados Postgres.

Diferente de alguns outros bancos, no Postgres o auto incremento da chave primaria é resultado de uma “função” ou “rotina” ou “recurso” chamada SEQUÊNCIAS, ou seja, quando criado a tabela e seus campos, também cria-se uma sequência que sera responsável pelo auto incremento da chave primária.

Pois bem, então teremos que fazer dois comandos, um para apagar os dados da tabela e outro para reiniciar o campo auto incremento.

Eu estou usando o PhpPgAdmin para administrar o banco, outros gerenciadores irão mostrar de outras formas a posição das informações.

A imagem abaixo mostra a tabela “categories” e seu conteúdo, o qual deverá ser apagado.

Primeiramente iremos apagar o conteúdo, com o comando DELETE (poderia ser usado outro comando como o TRUNCATE, mas optei pelo DELETE). Para digitar o comando vou mostrar uma forma, porem tem outras.

1 – Selecionar a tabela a qual desejamos apagar os dados;

2 – clicar no link “SQL” no canto superior direito da janela do phpPgAdmin;

3 – ira abrir a seguinte janela onde iremos digitar o comando: ” delete from categories; ” onde categories é o nome da tabela a ser limpa,  e em seguida clicar no botão executar;

4 – Feito isso nossa tabela estará limpa, porém, se for incluir um novo registro, a chave primária continuará incrementando se baseando no último registro, mesmo que não tenha mais registros na tabela, veja:

a – selecionar a tabela e clicar em “Inserir”

b – Digitar o conteúdo e clicar em “Inserir”

c – Resultado: Um registro.

Porem o campo de auto incremento “categoryid” traz o conteúdo = 6, ou seja, anteriormente, antes de limparmos os registros, tínhamos como conteúdo do último registro o numero 5.

5 – Teremos então que descobrir qual o nome da sequencia responsável por esse auto incremento e resetar ela. Por padrão, o nome da sequencia é composto por: nomedatabela_nomedacoluna_seq, no nosso caso ficaria assim:

Nome da tabela: categories

Nome do campo: categoryid

Então, nome da Sequencia: categories_categoryid_seq

Porem, o nome da sequencia pode ser mudado a gosto do responsável por sua criação, então nem sempre funciona a regra acima, conseguimos ver o nome da sequencia ao selecionar a tabela, conforme imagem abaixo:

6 – Após sabermos o nome da sequencia, agora é aplicar o comando para apagar o conteúdo e também reiniciar o auto incremento. Segue código.

delete from categories; //apagar o conteúdo da tabela cujo nome é “categories”
alter sequence categories_categoryid_seq restart with 1; //alterar a sequencia cujo nome é “categories_categoryid_seq” reiniciando a contagem para 1

e o resultado após incluirmos um novo registro é esse:

Read More

Excluir fila de impressão

Para aqueles casos onde você já reiniciou a impressora, já reiniciou o spooler de impressão do windows, já reiniciou o computador e o arquivo continua com o status “Excluindo…” na tela da fila de impressão, talvez este arquivo .bat possa lhe ajudar. Ele simplesmente para o spooler, apaga os arquivos do diretório PRINTERS – algo que em sempre é possível fazendo pela tela do windows – e reinicia o spooler.

Abaixo segue o código do arquivo para quem quiser alterar algo, e também o link para download, apenas salve em qualquer pasta e execute ele como administrador, antes de executar feche a tela da fila da impressora. Boa Sorte

@echo off
net stop spooler
cls
del %systemroot%\system32\spool\PRINTERS\*.* /Q
net start spooler
cls
echo ——————————————————
echo Procedimento Concluido.
echo ——————————————————
pause
echo.
exit %0

Read More