Notes - MIECT
Bases De Dados
Notes - MIECT
Bases De Dados
  • Bases de Dados
  • Introdução
    • Conceitos
    • Sistema de Gestão de Ficheiros (SGBD)
      • Vantagens e Desvantagens
      • Utilizadores
      • Dicionários
      • Interfaces (Aplicações)
      • Arquitetura ANSI/ SPARC
        • Independência dos Dados
      • Arquitetura Típica
    • Modelo de Base de Dados
      • Modelos NoSQL
      • Modelo Hierárquico
      • Modelo de Rede
  • Desenho de Base de Dados - Diagramas E/R
    • Desenho Base de Dados
    • Análise de Requisitos
    • Desenho Conceptual
    • Modelo Entidade/Relacionamento (E/R)
      • Entidade
      • Atributo
      • Relacionamento
        • Classificação
      • Restrições de Integridade
    • DER - Agregação
    • DER – Opções de Desenho
    • Generalização versus Especialização
      • Especialização
      • Generalização
    • Outras Notações DER
    • Casos de Estudo
      • Clínica Médica
      • Empresa
  • Modelo Relacional
    • Introdução
    • Conceitos
    • Relação
    • SuperChaves e Chaves Candidatas
    • Chave Primária
    • Restrições de Integridade
      • Regras de Codd
    • Conversão do DER em Modelo Relacional
      • Especialização
      • Agregação
      • Exemplo
  • Linguagem SQL - DDL
    • Linguagem SQL
    • Hierarquia de Objetos
    • Criar e Eliminar uma Base de Dados
    • Schema
    • Tipo de Dados
    • Definição de Domínio
    • Definição de Novo Tipo
    • Criar uma Tabela
    • Atributos
      • CHECK
      • PRIMARY KEY
      • UNIQUE
      • FOREIGN KEY
    • Tabela
    • Considerações Práticas
  • Álgebra Relacional
    • Operações Básicas
      • Seleção
      • Projeção
      • Encadeamento de Operações
      • Renomeação
      • União
      • Interseção
      • Diferença
      • Produto Cartesiano
      • Junção θ
      • Divisão
    • Operações Estendidas
      • Semi Join
      • Inner Vs. Outer Join
      • Outer Join
      • Agregação
    • Caso de Estudo
  • Linguagem SQL - DML
    • Projeção
    • Seleção
    • Inserção
    • Eliminação
    • Actualização
    • Renomeação
    • Queries
    • Operações com Conjuntos
      • Projeção
    • Renomeação
    • UNION
    • Produto Cartesiano
    • Junção de Relações
    • Queries
  • SQL DML - Consulta Simples
    • Operações com Conjuntos
    • Projeção
    • Seleção
    • Renomeação – Relação, Atributo e Aritmética
    • Reunião, Intersecção e Diferença
    • Produto Cartesiano
    • Junção de Relações
    • Junção
    • Queries
  • Consultas Avançadas
    • Tratamento dos NULL
    • NATURAL JOIN
    • OUTER JOIN
    • Encadeamento
    • Agregações
    • SubQueries
    • Pertença a Conjunto
    • Comparação de Conjuntos
    • EXISTS
    • UNIQUE
    • SubConsultas Não Correlacionadas
  • Linguagem SQL – View
    • View
    • Utilização
    • Query Modification
    • Alterar e Eliminar
    • Update de Dados
    • WITH CHECK OPTION
  • Normalização
    • Desenho de BD - Esquemas de Relação
    • Semântica dos atributos da relação
    • Redução dos NULLs nos tuplos
    • Junção de Relações baseada em PK e FK
    • Dependências Funcionais (DP)
    • Normalização
      • Primeira Forma Normal (1NF)
      • Segunda Forma Normal (2FN)
      • Terceira Forma Normal (3FN)
      • Boyce-Codd Normal Form (BCNF)
      • Ponto de Equilíbrio
      • 4FN e 5FN
      • Dependências de Junção
  • Indexação e Optimização
    • Introdução
    • Índices
      • Single-Level Ordered
      • Multilevel Index
    • Árvore de Pesquisa
    • SQL - Index
    • Seleção de Índices
      • Caso de Estudo
    • SQL Server - Indexing
    • SQL Server: Clustered index
    • SQL Server: Non-clustered index
    • B-Tree Page Split
    • Opções de Especialização
    • Heap vs Clustered Table
    • Escolha de um Clustered Index
    • Escolha de um Non-Clustered Index
    • B-Tree Tuning
    • Desfragmentação de Índices
  • SQL Programming
    • Script & Batch
    • Variáveis
    • PRINT
    • Instruções de Controlo de Fluxo
    • Tabelas Temporárias
    • Tabelas como Variáveis
    • Cursor
    • Stored Procedures
      • SQL Statement vs. Stored Procedure
      • Create
      • Update e Drop
      • Tipos
      • Execução
      • Parâmetros de Saída
      • Cifragem
    • T-SQL Error Handling
    • T-SQL RAISERROR
    • T-SQL: Try … Catch
    • User Defined Functions (UDF)
      • Tipos
    • Trigger
      • After
      • Instead of
      • Inserted e Deleted – Logical Tables
      • Colunas Alteradas
      • Limitações
      • Funcionalidades Úteis
  • Transações
    • Introdução
    • Transação – Operações de Leitura e Escrita
    • Transações em SQL Standard
    • Estado de uma Transação
    • Propriedades
  • Controlo de Concorrência
    • Transações
    • Escalonamento Concorrente
    • Métodos
  • Recuperação de Falhas
    • Introdução
    • Falhas de um SGBD
    • Escalonamento vs Recuperação de Falhas
    • Backups
    • Transactions Logs
    • Rollback – até que ponto?
    • Custos
  • SQL Server
    • Resumo da Sintaxe
    • Transações Encadeadas
    • Stored Procedures e Rollbacks
    • Transações
  • Aspectos de Segurança
    • Modelo de Segurança
    • Login e User
    • Segurança na Base de Dados
    • DB - Grant Access
    • Segurança dos Objetos da BD
    • Objetos
    • Stored Procedure
    • Cifragem de Atributos
    • SQL INJECTION
Powered by GitBook
On this page
  • Definição
  • Conceitos Básicos
  • Transaction Flow
  • Ideias a reter...
  • Create, Enable/Disable, Drop
  • Sintaxe
  1. SQL Programming

Trigger

Definição

Trigger

Um tipo especial de stored procedure que é executado em determinadas circunstâncias (eventos) associadas à manipulação de dados.

SQL Server suporta dois tipos de trigger: DML e DDL. Só vamos tratar de triggers DML:

  • São criados em tabelas (ou vistas) e têm uma ou mais ações associadas (INSERT, UPDATE, DELETE).

Quando ocorre uma das ações previstas, os triggers são “disparados” (executados).

Exemplos de uso:

  • Maintenance of duplicate and derived data;

  • Complex column constraints;

  • Cascading referential integrity;

  • Complex defaults;

  • Inter-database referential integrity.

Conceitos Básicos

SQL Server triggers são disparados uma vez por cada operação de modificação de dados

  • Não por tuplo afectado – caso da Oracle.

Ter em atenção que os triggers estendem a duração da transação:

  • Pode criar problemas de locks/blocks em sistemas de elevado desempenho.

  • Compromisso entre integridade dos dados e potencial impacto no desempenho.

Existem dois tipos de DML triggers que diferem quanto ao propósito, timing e efeito.

  • instead of

  • after

Transaction Flow

É importante entender em que parte da transação ocorre cada um dos triggers...

  1. IDENTITY INSERT check

  2. Null ability constraint

  3. Data-type check

  4. INSTEAD OF trigger execution

    1. If an INSTEAD OF trigger exists, then execution of the DML stops here. INSTEAD OF triggers are not recursive. Therefore, if the INSERT trigger executes another DML command, then the INSTEAD OF trigger will be ignored the second time around.

  5. Primary-key constraint

  6. Check constraints

  7. Foreign-key constraint

  8. Foreign-key constraint

  9. AFTER trigger execution

  10. Commit transaction

Ideias a reter...

AFTER trigger pode assumir que os dados passaram todos as verificações de integridade de dados.

AFTER trigger ocorre depois de todos os constraints

  • Não pode corrigir eventuais problemas dos dados.

AFTER trigger ocorre antes do commit1 da transação DML. Assim podemos fazer o rollback1 da transação se os dados forem inaceitáveis.

INSTEAD OF trigger – a transação para no ponto 4 e nenhum dos posteriores é executado, incluindo a instrução DML.

INSTEAD OF trigger pode “contornar” problemas de integridade referencial mas não de nulidade, tipo de dados e identidade das colunas.

Create, Enable/Disable, Drop

Sintaxe

Criação

CREATE TRIGGER trigger_name ON <tablename>
AFTER | INSTEAD OF { [INSERT] [,] [UPDATE] [,] [DELETE]}
AS
SQL_Statement

Ativar | Desativa

ALTER TABLE <tablename> ENABLE | DISABLE TRIGGER trigger_name

OU

ENABLE | DISABLE TRIGGER trigger_name ON <tablename>

Eliminar

DROP TRIGGER trigger_name ON <tablename>
PreviousTiposNextAfter

Last updated 2 years ago