Linguagem SQL Restrições, Triggers e Views

Documentos relacionados
FACULDADE INGÁ Unidade de Ensino Superior Ingá Ltda Ciência da Computação TRIGGERS. Prof. Erinaldo Sanches Nascimento

Triggers(Gatilhos) Tiago Alves de Oliveira

Tabelas. Banco de Dados I MySQL

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

Prof. Josenildo Silva

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

PSI Linguagem de Definição de dados. Módulo 15

Banco de Dados. Professora: Luciana Faria

Banco de Dados I Introdução SQL

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

Marcos Alexandruk Marcos Alexandruk

Curso de Ciência da Computação

SQL Gatilhos (Triggers)

Avisos. Sumário. Atividade em lab Aula 29. Atividade em lab Aula 29. Programando com SQL Triggers EXERCÍCIO LAB SP. Vista da segunda prova

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

Subsistema de Integridade Semântica

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Subsistema de Integridade Semântica

BCD29008 Banco de dados

A linguagem SQL

Triggers e Regras. Fernando Lobo. Base de Dados, Universidade do Algarve

Restrições de Integridade Semântica

f. Exemplo: verificar condição de aprovação de alunos

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

TRIGGERS Temas abordados

26/04/2017 Triggers no SQL Server: teoria e prática aplicada em uma situação real

A linguagem SQL

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

ACH2025. Laboratóriode Bases de Dados. SQL Oracle Asserçõese gatilhos. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

Stored Procedures e Triggers

Para criarmos um banco de dados no MySql, utilizamos à instrução:

Manipulação de Dados com SQL

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

BANCO DE DADOS TRIGGERS (GATILHOS) Prof. Fabiano Papaiz IFRN

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

Tarefa Orientada 17 Scripts

SISTEMAS DE INFORMAÇÃO

CIÊNCIA E TECNOLOGIA DO RIO

BANCO DE DADOS WEB AULA 9. concessão e revogação de privilégios. professor Luciano Roberto Rocha.

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

MySQL. Prof. César Melo. com a ajuda de vários

MySql. Introdução a MySQL. Andréa Garcia Trindade

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 20. Escola Politécnica da Universidade de São Paulo

Professor Leonardo Larback

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

Fábio Borges de Oliveira. MySQL

S U B G R U P O S D M L E D Q L : A L T E R A N D O E A P A G A N D O D A D O S E M U M A T A B E L A


MYSQL - PRIMEIROS COMANDOS CRIAÇÃCO DO BD E DAS TABELAS, INSERÇÃO E CONSULTA DE REGISTROS. create database [if not exists] <nome>

Revisão de Bancos de Dados

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.


Prof. Dr. Joaquim Assunção Banco de Dados. SQL (parte 4) DDL Restrições

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Banco de Dados II. Triggers e Functions. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

ESTUDO DE CASO EM PL/SQL

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU

Utilizando o Postgres - comandos SQL para a manipulação de dados

Informática I. Aula 8. Aula 8-25/09/2006 1

Múltiplas Tabelas. Disciplina de Banco de Dados

IMPLEMENTAÇÃO DE BANCO DE DADOS

INSERT INTO shop VALUES (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69), (3,'D',1.25),(4,'D',19.95);

BANCO DE DADOS PARA WEB

Administração de Banco de Dados

SQL Linguagem de Definição de Dados

PHP INTEGRAÇÃO COM MYSQL PARTE 1


BANCO DE DADOS WEB AULA 12. manipulação de dados atualização e exclusão de registros. professor Luciano Roberto Rocha.

BD II (SI 587) Procedimentos Armazenados


SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

Linguagem de Definição de Dados (DDL)

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

trigger insert, delete, update

Gatilhos (Triggers) Prof. Márcio Bueno Elaborado por Maria Lígia B. Perkusich

Definição do esquema da base de dados. o esquema da BD é composto pelas definições de todas as tabelas da BD.

TRIGGER e SEGURANÇA. Prof. Edson Thizon

Neste artigo, serão apresentados os principais conceitos sobre os TRIGGERS e sua aplicabilidade.

Oracle 10g: SQL e PL/SQL

Administração de Banco de Dados

Oracle Database 11g: Introdução à Linguagem SQL Novo

Disciplina: Banco de Dados Tema: SQL Parte 2

SQL. Autor: Renata Viegas

Banco de Dados SQL (Structured Query Language) Ana Paula Toome Wauke

FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA. Módulo de Programação Prof. Bruno Maciel

Introdução à linguagem SQL

Transcrição:

FACULDADE INGÁ Unidade de Ensino Superior Ingá Ltda Ciência da Computação Linguagem SQL Restrições, Triggers e Views Prof. Erinaldo Sanches Nascimento

Objetivos Especificar restrições mais gerais sobre o banco de dados. Especificar regras ativas Definir views (visões) no banco de dados.

Especificar Restrições CREATE TRIGGER Especifica ações automáticas que o sistema de banco de dados realizará quando certos eventos e condições ocorrerem.

Triggers objeto de dados associado a uma tabela é ativado quando ocorre um evento específico para a tabela executam verificações de valores a serem inseridos em uma tabela realizam cálculos sobre os valores envolvidos em uma atualização

Está associado a uma instrução para inserir, atualizar ou excluir linhas da tabela. Um disparo pode ser programado para ser ativado antes ou depois do evento de disparo.

Sintaxe Para criar uma trigger: CREATE TRIGGER Para eliminar uma trigger: DROP TRIGGER

CREATE [DEFINER = { user CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_body trigger_time: { BEFORE AFTER } trigger_event: { INSERT UPDATE DELETE }

Cria uma nova trigger. A trigger fica associado com a tabela tbl_name. Não pode associar uma trigger a uma tabela temporária ou uma visão. Todas as triggers devem ter nomes exclusivos em um esquema. Triggers em esquemas diferentes podem ter o mesmo nome.

CREATE TRIGGER requer o privilégio TRIGGER para a tabela associada. A declaração também pode exigir o privilégio SUPER, dependendo do valor DEFINER. Se o log binário estiver habilitado, CREATE TRIGGER pode exigir o privilégio SUPER. A cláusula DEFINER determina o contexto de segurança para ser utilizado ao verificar os privilégios de acesso no momento da ativação da trigger.

trigger_time é o tempo de ação do gatilho. Pode ser BEFORE ou AFTER, para indicar antes ou depois de cada linha ser modificado. trigger_event indica o tipo de operação que ativa o gatilho. INSERT: através de INSERT, LOAD DATA, e REPLACE. UPDATE: através de instruções UPDATE. DELETE: através de declarações DELETE e REPLACE.

O trigger_event não representa um tipo literal de instrução SQL que aciona o gatilho representa um tipo de operação de tabela. Ações de chave estrangeira em cascata não ativam os gatilhos. Não pode haver vários gatilhos para uma determinada tabela que tem o mesmo evento de disparo e tempo de ação. É possível ter um gatilho BEFORE UPDATE e um BEFORE INSERT, ou um gatilho BEFORE INSERT e um AFTER UPDATE.

trigger_body é a instrução a ser executada quando o gatilho é ativado. A construção BEGIN...END executa múltiplos comandos. O alias OLD.col_name refere-se a uma coluna de uma linha existente antes de ser atualizada ou excluída. NEW.col_name refere-se à coluna de uma nova linha a ser inserida ou uma linha existente depois de atualizada.

A cláusula DEFINER especifica a conta MySQL para ser usada ao verificar os privilégios de acesso no gatilho o tempo de ativação. Se um valor de usuário é dado, deve ser uma conta MySQL especificada como 'user_name ' @ ' host_name ' (o mesmo formato usado na instrução GRANT ), CURRENT_USER, ou CURRENT_USER (). O valor DEFINER padrão é o usuário que executa a instrução CREATE TRIGGER. O mesmo que especificar DEFINER = CURRENT_USER explicitamente. Essas regras determinam os valores de usuário válidos: Sem o privilégio SUPER, o único valor usuário permitida é o da própria conta, ou especificados literalmente ou usando CURRENT_USER. Com o privilégio SUPER pode especificar qualquer nome de conta sintaticamente válido. Embora seja possível, não é uma boa idéia criar um gatilho com uma conta DEFINER inexistente

MySQL leva o usuário DEFINER em conta quando verifica privilégios de gatilho: Na hora do CREATE TRIGGER, o usuário que emite a declaração deve ter o privilégio TRIGGER. No momento de ativação de gatilho, os privilégios são verificadas em relação ao usuário DEFINER. Este usuário deve ter esses privilégios: O privilégio TRIGGER. O privilégio SELECT. O privilégio UPDATE. Quaisquer outros privilégios são normalmente necessários para as instruções executadas pelo gatilho.

DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name Exclui um gatilho. O nome do esquema (banco de dados) é opcional. DROP TRIGGER requer o privilégio TRIGGER para a tabela associada com o gatilho. IF EXISTS previne ocorrer um erro por um gatilho que não existe. Gatilhos de uma tabela também são descartados se você descartar a tabela.

Exemplo Exemplo de gatilho que funciona como um acumulador, somando os valores inseridos em uma das colunas da tabela. CREATE TABLE conta (nconta INT, valor DECIMAL(10,2)); CREATE TRIGGER ins_soma BEFORE INSERT ON conta FOR EACH ROW SET @soma = @soma + NEW.valor; SET @soma = 0; INSERT INTO conta VALUES(137,14.98), (141,1937.50),(97,-100.00); SELECT @soma AS 'Montante total inserido';

Para destruir a trigger, use uma instrução DROP TRIGGER. Lembre-se de especificar o nome do esquema se o gatilho não está no esquema padrão. DROP TRIGGER mydb.ins_soma;

Um trigger UPDATE que verifica o novo valor a ser utilizado a cada linha, e modifica o valor para estar dentro do intervalo de 0 a 100. delimiter // CREATE TRIGGER upd_check BEFORE UPDATE ON conta FOR EACH ROW BEGIN END;// delimiter ; IF NEW.valor < 0 THEN SET NEW.valor = 0; ELSEIF NEW.valor > 100 THEN END IF; SET NEW.valor = 100;

Exercícios 1. Crie a tabela que será utilizada: create table clientes( idcliente int unsigned auto_increment primary key, nomecliente char(80) not null, emailcliente char(80) not null, datacadastro timestamp default current_timestamp ) Engine = InnoDB;

2. Crie um trigger que, após a inserção, valide a quantidade de caracteres do nomecliente maior ou igual a 4 (quatro). Caso seja menor atribui-lhe null. 3. Insira uma nova cliente chamada Tina. 4. Insira um novo cliente chamado Wagner. 5. Crie uma tabela produtos.

6. Crie a tabela compras. 7.