Pesquise algo no blog

domingo, 17 de maio de 2015

Curso PostgreSQL aula 02 - Trigger



Introdução


Trigger é um dos recursos disponíveis em praticamente todos os bancos de dados disponíveis no mercado. Uma Trigger é algo que deve ser executado pelo banco de dados, antes ou depois da execução de um comando SQL como Insert, Update, Delete, etc.

Nesta aula você vai aprender criar uma Trigger no banco de dados PostgreSQL.


Objetivo


O objetivo desta aula é introduzir o conceito de trigger no curso, bem como ensinar você como criar uma trigger, quando utilizar uma trigger no PostgreSQL.


Video desta aula.


No video da aula você poderá acompanha passo a passo todos os procedimentos para criar uma trigger no banco de dados.





Script usado como exemplo desta aula


Para esta aula iremos criar uma tabela de clientes contendo a estrutura conforme apresentado abaixo, crie no seu banco de dados de estudos para este curso esta tabela apenas rodando copiando este script e executando no console SQL do pgAdmin III.


CREATE TABLE cliente
(
  id serial NOT NULL,
  nome character(45) NOT NULL, 
  telefoneFixo character(13), 
  telefoneCelular character(13),
  email character(40), 
  sexo character(1) NOT NULL,
  dataCadastro timestamp null,
  dataAlteracao timestamp null,
  CONSTRAINT cliente_pkey_id PRIMARY KEY (id)
)



O que é uma Trigger?


Uma trigger é um script que será executado conforme um dado evento ocorra no banco de dados. Podemos criar trigger para os eventos SQL de Insert, Update e Delete nas tabelas.

As trigger podem ser executadas antes da execução do evento SQL ou depois, Before ou After respectivamente.


Criando uma trigger before insert


Como exemplo, vamos adicionar uma trigger para ser executada sempre que um registro for adicionado a tabela cliente que acabamos de criar.

Toda vez que um novo registro for adicionado, iremos "salvar" automaticamente usando uma trigger q data e a hora em que o registro foi efetivamente inserido no banco de dados pelo servidor PostgreSQL.

Antes de criar a trigger, adicionar alguns registros manualmente na tabela cliente e deixe os campos dataCadastro e dataAlteracao em branco.


Script para adicionar registros na tabela cliente


  INSERT INTO 
  cliente(nome, telefonefixo, telefonecelular, email, sexo)
    VALUES ('Nome 01', '92929292', '91919191','meu@email.com', 'M');

  INSERT INTO 
  cliente(nome, telefonefixo, telefonecelular, email, sexo)
    VALUES ('Nome 02', '92929292', '91919191','meu@email.com', 'M');

  INSERT INTO 
  cliente(nome, telefonefixo, telefonecelular, email, sexo)
    VALUES ('Nome 03', '92929292', '91919191','meu@email.com', 'M');

  INSERT INTO 
  cliente(nome, telefonefixo, telefonecelular, email, sexo)
    VALUES ('Nome 04', '92929292', '91919191','meu@email.com', 'M');


Linguagem plpgsql


A linguagem plpgsql, é uma linguagem nativa do banco de dados PostgreSQL que tem por finalidade permitir a criação de scripts dos mais simples aos mais softsticados diretamente no banco de dados.

É possível adicionar regras de negócios complexas para serem executadas pelo banco de dados, assim de certa forma, deixando a aplicação escrita em Java por exemplo, sem conhecimento algum das regras de negócios utilizadas para processamentos, cálculos, etc.

Nós não iremos nesta aula entrar em detalhes desta linguagem. O que você terá que fazer é executar os dois scripts abaixo para criar a trigger que efetuará o registro automáticamente da data de inclusão de todos os novos clientes na tabela cliente do nosso banco de dados.

O script abaixo, cria um função chamada data_cadastro() que tem a responsabilidade de atualizar o campo dataCadastro a data atual. É muito comum chamar este tipo de script como store procedure.

Primeiro Script

Este script quando executado criar uma store procedure no banco de dados que poderá ser utilizada por qualquer trigger. É importânte você observar que para aproveitar esta store procedure, as tabelas que você deseja gravar a data do cadastro de um registro, você deve adicionar na tabela uma coluna chamada dataCadastro e deve ser do tipo timestamp.


CREATE OR REPLACE FUNCTION data_cadastro()
RETURNS TRIGGER AS $$
BEGIN
    NEW.dataCadastro = now();
    RETURN NEW;
END;
$$ language 'plpgsql';



Agora vamos efetivamente criar a trigger para chamar esta função.

Segundo Script

Quando o script abaixo for executado, a trigger chamada data_cadastro_novo_cliente será criada para a tabela cliente. A função desta trigger será ser executada sempre antes de adicionar um registro na tabela cliente. Ela vai chamar a store procedure data_cadastro, que revolve a data e hora atual do sistema.


CREATE TRIGGER data_cadastro_novo_cliente
  BEFORE INSERT
  ON cliente
  FOR EACH ROW
  EXECUTE PROCEDURE data_cadastro();


Desafio para você


Tente criar uma store procedure e uma trigger para atualizar a data de alteração dos registros da tabela cliente utilizada nesta aula.

Este será o assunto da próxima aula.

Conclusão


Conforme foi visto nesta aula, podemos criar regras de negócio diretamente programando no banco de dados. No exemplo criamos uma regra para garantir que para todos os registros adicionados ao banco de dados, teremos a data atual do sistema gravados no registro.






domingo, 17 de maio de 2015

Curso PostgreSQL aula 02 - Trigger



Introdução


Trigger é um dos recursos disponíveis em praticamente todos os bancos de dados disponíveis no mercado. Uma Trigger é algo que deve ser executado pelo banco de dados, antes ou depois da execução de um comando SQL como Insert, Update, Delete, etc.

Nesta aula você vai aprender criar uma Trigger no banco de dados PostgreSQL.


Objetivo


O objetivo desta aula é introduzir o conceito de trigger no curso, bem como ensinar você como criar uma trigger, quando utilizar uma trigger no PostgreSQL.


Video desta aula.


No video da aula você poderá acompanha passo a passo todos os procedimentos para criar uma trigger no banco de dados.





Script usado como exemplo desta aula


Para esta aula iremos criar uma tabela de clientes contendo a estrutura conforme apresentado abaixo, crie no seu banco de dados de estudos para este curso esta tabela apenas rodando copiando este script e executando no console SQL do pgAdmin III.


CREATE TABLE cliente
(
  id serial NOT NULL,
  nome character(45) NOT NULL, 
  telefoneFixo character(13), 
  telefoneCelular character(13),
  email character(40), 
  sexo character(1) NOT NULL,
  dataCadastro timestamp null,
  dataAlteracao timestamp null,
  CONSTRAINT cliente_pkey_id PRIMARY KEY (id)
)



O que é uma Trigger?


Uma trigger é um script que será executado conforme um dado evento ocorra no banco de dados. Podemos criar trigger para os eventos SQL de Insert, Update e Delete nas tabelas.

As trigger podem ser executadas antes da execução do evento SQL ou depois, Before ou After respectivamente.


Criando uma trigger before insert


Como exemplo, vamos adicionar uma trigger para ser executada sempre que um registro for adicionado a tabela cliente que acabamos de criar.

Toda vez que um novo registro for adicionado, iremos "salvar" automaticamente usando uma trigger q data e a hora em que o registro foi efetivamente inserido no banco de dados pelo servidor PostgreSQL.

Antes de criar a trigger, adicionar alguns registros manualmente na tabela cliente e deixe os campos dataCadastro e dataAlteracao em branco.


Script para adicionar registros na tabela cliente


  INSERT INTO 
  cliente(nome, telefonefixo, telefonecelular, email, sexo)
    VALUES ('Nome 01', '92929292', '91919191','meu@email.com', 'M');

  INSERT INTO 
  cliente(nome, telefonefixo, telefonecelular, email, sexo)
    VALUES ('Nome 02', '92929292', '91919191','meu@email.com', 'M');

  INSERT INTO 
  cliente(nome, telefonefixo, telefonecelular, email, sexo)
    VALUES ('Nome 03', '92929292', '91919191','meu@email.com', 'M');

  INSERT INTO 
  cliente(nome, telefonefixo, telefonecelular, email, sexo)
    VALUES ('Nome 04', '92929292', '91919191','meu@email.com', 'M');


Linguagem plpgsql


A linguagem plpgsql, é uma linguagem nativa do banco de dados PostgreSQL que tem por finalidade permitir a criação de scripts dos mais simples aos mais softsticados diretamente no banco de dados.

É possível adicionar regras de negócios complexas para serem executadas pelo banco de dados, assim de certa forma, deixando a aplicação escrita em Java por exemplo, sem conhecimento algum das regras de negócios utilizadas para processamentos, cálculos, etc.

Nós não iremos nesta aula entrar em detalhes desta linguagem. O que você terá que fazer é executar os dois scripts abaixo para criar a trigger que efetuará o registro automáticamente da data de inclusão de todos os novos clientes na tabela cliente do nosso banco de dados.

O script abaixo, cria um função chamada data_cadastro() que tem a responsabilidade de atualizar o campo dataCadastro a data atual. É muito comum chamar este tipo de script como store procedure.

Primeiro Script

Este script quando executado criar uma store procedure no banco de dados que poderá ser utilizada por qualquer trigger. É importânte você observar que para aproveitar esta store procedure, as tabelas que você deseja gravar a data do cadastro de um registro, você deve adicionar na tabela uma coluna chamada dataCadastro e deve ser do tipo timestamp.


CREATE OR REPLACE FUNCTION data_cadastro()
RETURNS TRIGGER AS $$
BEGIN
    NEW.dataCadastro = now();
    RETURN NEW;
END;
$$ language 'plpgsql';



Agora vamos efetivamente criar a trigger para chamar esta função.

Segundo Script

Quando o script abaixo for executado, a trigger chamada data_cadastro_novo_cliente será criada para a tabela cliente. A função desta trigger será ser executada sempre antes de adicionar um registro na tabela cliente. Ela vai chamar a store procedure data_cadastro, que revolve a data e hora atual do sistema.


CREATE TRIGGER data_cadastro_novo_cliente
  BEFORE INSERT
  ON cliente
  FOR EACH ROW
  EXECUTE PROCEDURE data_cadastro();


Desafio para você


Tente criar uma store procedure e uma trigger para atualizar a data de alteração dos registros da tabela cliente utilizada nesta aula.

Este será o assunto da próxima aula.

Conclusão


Conforme foi visto nesta aula, podemos criar regras de negócio diretamente programando no banco de dados. No exemplo criamos uma regra para garantir que para todos os registros adicionados ao banco de dados, teremos a data atual do sistema gravados no registro.