terça-feira, 23 de fevereiro de 2016

Recuperando dados de um TIMESTAMP no Postgres

Uma função muito útil do Postgres é a recuperação de dados de um Timestamp, abaixo executamos a extração de dia, mês e ano de um timestamp.

SELECT EXTRACT(DAY FROM TIMESTAMP '2016-02-16 00:15:00');
SELECT EXTRACT(MONTH FROM TIMESTAMP '2016-02-16 00:15:00');
SELECT EXTRACT(YEAR FROM TIMESTAMP '2016-02-16 00:15:00');

Também podemos executar de uma outra forma para obter o mesmo resultado:

SELECT date_part('YEAR', timestamp '2014-04-25 08:44:21');
SELECT date_part('MONTH', timestamp '2014-04-25 08:44:21');
SELECT date_part('DAY', timestamp '2014-04-25 08:44:21');

Criando TRIGGERS no Postgres 9.2

Um dos recursos mais simples de um SGDB e comuns à serem utilizados são as TRIGGERS ou "Gatilhos', estes executam um processo antes ou depois de uma determinada ação no banco de dados. No exemplo abaixo é inserido um registro em uma tabela após uma tabela referente sofrer alteração em seus registros.

O primeiro passo é criar uma função que será executada toda vez que a tabela referente sofrer alteração.

OBS: A variável NEW se trata dos dados que estão vindo da alteração da tabela referente.

CREATE OR REPLACE FUNCTION atualiza_tabela () RETURNS trigger as $registro$
BEGIN
INSERT INTO tabelaX (campo1, campo2, campo3) 
VALUES ( NEW.dado1, NEW.dado12, NEW.dado3,
);

RETURN NEW;
END;
$registro$ LANGUAGE plpgsql;

Agora criamos literalmente a TRIGGER que será acionada toda vez que a tabela referente sofrer alteração, chamando a função que criamos acima.

CREATE TRIGGER TR_atualiza_tabela AFTER INSERT OR UPDATE ON tabela_referente
    FOR EACH ROW EXECUTE PROCEDURE atualiza_tabela();

Fonte: http://www.postgresql.org/docs/9.2/static/plpgsql-trigger.html

quinta-feira, 18 de fevereiro de 2016

Convertendo caracteres no Postgres

Uma função muito útil no PostgresSQL é a conversão de encoding de caracteres de um tipo para outro. No exemplo abaixo desejo converter um caracter que está no tipo LATIN1 para o tipo UTF-8.

SELECT CONVERT_FROM(convert_to('Brotas De Macaúbas', 'LATIN1'), 'UTF-8')