SóProvas


ID
992107
Banca
FCC
Órgão
TRT - 12ª Região (SC)
Ano
2013
Provas
Disciplina
Banco de Dados
Assuntos

Em PostgreSQL, se uma função de um gatilho ( trigger ) executar comandos SQL, existe a possibilidade destes comandos também executarem outros gatilhos. Este processo é conhecido como

Alternativas
Comentários
  • O único processo que permite que ações de um gatilho possam disparar outros gatilhos é conhecido como Cascading Triggers, o qual pode ser visto no exemplo a seguir:
    CREATE TRIGGER del_manu   DELETE ON manufact REFERENCING OLD AS pre_del   FOR EACH ROW(DELETE FROM stock WHERE manu_code = pre_del.manu_code);CREATE TRIGGER del_stock   DELETE ON stock REFERENCING OLD AS pre_del   FOR EACH ROW(DELETE FROM items WHERE manu_code = pre_del.manu_code);CREATE TRIGGER del_items   DELETE ON items REFERENCING OLD AS pre_del   FOR EACH ROW(EXECUTE PROCEDURE log_order(pre_del.order_num))
    O primeiro trigger del_manu deleta todos os itens do manufact da tabela stock. O DELETE da tabela stock dispara o segundo trigger del_items que deleta todos itens da tabela items e assim por diante...
  • http://www.postgresql.org/docs/9.2/static/trigger-definition.html


  • Lembrando que em Postgre não se pode limitar o número de níveis do cascateamento, podendo gerar recursividade, chamando o mesmo trigger novamente.

  • Só uma pequena revisão sobre triggers:Um trigger é um tipo especial de procedimento armazenado, que é executado sempre que há uma tentativa de modificar os dados de uma tabela que é protegida por ele.

    Associados a uma tabela

    Os TRIGGERS são definidos em uma tabela específica, que é denominada tabela de TRIGGERS;

    Chamados Automaticamente

    Quando há uma tentativa de inserir, atualizar ou excluir os dados em uma tabela, e um TRIGGER tiver sido definido na tabela para essa ação específica, ele será executado automaticamente, não podendo nunca ser ignorado.

    Não podem ser chamados diretamente

    Ao contrário dos procedimentos armazenados do sistema, os disparadores não podem ser chamados diretamente e não passam nem aceitam parâmetros.

    É parte de uma transação

    O TRIGGER e a instrução que o aciona são tratados como uma única transação, que poderá ser revertida em qualquer ponto do procedimento, caso você queria usar “ROLLBACK”.

    Sintaxe do trigger no postgreSQL

    CREATE [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] } ON table [ FROM referenced_table_name ] { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } } [ FOR [ EACH ] { ROW | STATEMENT } ] [ WHEN ( condition ) ] EXECUTE PROCEDURE function_name ( arguments ) where event can be one of: INSERT UPDATE [ OF column_name [, ... ] ] DELETE TRUNCATE

    Leia mais em: Introdução à TRIGGERS http://www.devmedia.com.br/introducao-a-triggers/1695#ixzz37r4zGqQg

  • http://www.postgresql.org/docs/7.4/static/triggers.html

  • Quem não tem acesso:  - -> A