Sei sulla pagina 1di 3

UnC Campus Mafra

Sistemas de Informao 4 fase


Banco de Dados II
Aula 01 05/08/2015

Reviso
Bancos de Dados
Um sistema de banco de dados caracteriza-se por um sistema computadorizado de
armazenamento de registros, ou seja, um repositrio para uma coleo de arquivos de dados
computadorizados. De forma abstrata, podemos comparar um sistema de banco de dados a um
arquivo de metal onde ficam armazenadas pastas com diversos formulrios.
Os usurios deste sistema podem efetuar diversas operaes sobre esses arquivos como:
Inserir novos arquivos vazios;
Inserir novos dados nos arquivos existentes;
Buscar dados;
Alterar dados;
Eliminar dados e
Remover arquivos existentes dentro do banco de dados;

Linguagem SQL
SQL Structured Query Language uma linguagem de definio e manipulao de dados
relacionais, desenvolvida nos laboratrios da IBM na dcada de 70 e hoje padronizada pelos comits
ISO/Ansi. Em resumo podemos dizer que se trata de uma linguagem padro de comunicao com
base de dados que nos permite trabalhar com qualquer tipo de linguagem (ASP, PHP, C/C++, Java) e
com qualquer tipo de sistemas gerenciadores de bases de dados (SQL Server, MySQL, Oracle).
- DDL: Linguagem de Definies de Dados o subconjunto da linguagem SQL que trata das
operaes/comandos que definem objetos dentro do banco de dados: create, alter e drop;
- DML: Linguagem de Manipulao de Dados um subconjunto da linguagem SQL usada
para inserir, apagar e atualizar os dados dentro de um banco de dados. Basicamente constituda
das seguintes operaes/comandos: insert, update, delete e select;

Triggers
Um TRIGGER ou gatilho um objeto de banco de dados, associado a uma tabela, definido
para ser disparado, respondendo a um evento em particular. Tais eventos so os comandos da DML
(Data Manipulation Language): INSERT, REPLACE, DELETE ou UPDATE. Podemos definir inmeros
TRIGGERS em uma base de dados baseados diretamente em qual dos comandos acima ir disparlo, sendo que, para cada um, podemos definir apenas um TRIGGER. Os TRIGGERS podero ser
disparados para trabalharem antes ou depois do evento.
Podemos definir os TRIGGERS para serem disparados, por exemplo, antes (BEFORE) ou
depois (AFTER) de um INSERT. Agora sabemos ento que para cada momento BEFORE ou AFTER,
podemos ter um TRIGGER a ser disparado para defender alguma lgica.
A sintaxe geral de definio de um TRIGGER a seguinte:

CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt

DEFINER: Quando o TRIGGER for disparado, esta opo ser checada para checar com
quais privilgios este ser disparado. Utilizar os privilgios do usurio informado em user
(fulano@localhost) ou os privilgios do usurio atual (CURRENT_USER). Caso essa

sentena seja omitida da criao do TRIGGER, o valor padro desta opo


CURRENT_USER();
trigger_name: define o nome do procedimento, por exemplo, trg_test;
trigger_time: define se o TRIGGER ser ativado antes (BEFORE) ou depois (AFTER) do
comando que o disparou;
trigger_event: aqui se define qual ser o evento, INSERT, REPLACE, DELETE ou UPDATE;
tbl_name: nome da tabela onde o TRIGGER ficar "pendurado" aguardando o trigger_event;
trigger_stmt: as definies do que o o TRIGGER dever fazer quando for disparado.

Definir dados de antes (OLD) e depois (NEW)


Em meio aos TRIGGERS temos dois operadores importantssimos que nos possibilitam
acessar as colunas da tabela alvo do comando DML, ou seja, podemos acessar os valores que sero
enviados para a tabela tbl_cliente antes (BEFORE) ou depois (AFTER) de um UPDATE, por exemplo.
Tais operadores nos permitiro ento, ter dois momentos, o antes e o depois e tambm examinar os
valores para que sejam ou no inseridos, atualizados ou excludos da tabela.
Antes mesmo de analisarmos os operadores, temos que analisar vejamos as seguintes
diretrizes:
INSERT: o operador NEW.nome_coluna, nos permite verificar o valor enviado para ser
inserido em uma coluna de uma tabela. OLD.nome_coluna no est disponvel.
DELETE: o operador OLD.nome_coluna nos permite verificar o valor excludo ou a ser
excludo. NEW.nome_coluna no est disponvel.
UPDATE: tanto OLD.nome_coluna quanto NEW.nome_coluna esto disponveis, antes
(BEFORE) ou depois (AFTER) da atualizao de uma linha.

Exemplos
1) Trigger que ir inserir dados na tabela de pontos para cada nova insero na tabela de
clientes:

CREATE TRIGGER add_linha_pontos AFTER INSERT ON tb_usuarios


FOR EACH ROW BEGIN
INSERT INTO tb_pontos SET codigo_usuario=NEW.codigo, pontos='0';
END;

2) Trigger que ir realizar uma validao de campos:

DELIMITER |
CREATE TRIGGER tr_validanome BEFORE INSERT ON tb_clientes
FOR EACH ROW
BEGIN
SET @nome = NEW.nome;
IF ((CHAR_LENGTH(@nome) <= 4) OR (@nome = )) THEN
SET NEW.nome=NULL;
END IF;
END|
DELIMITER;