Escolar Documentos
Profissional Documentos
Cultura Documentos
SQL Manager 2011 Lite For PostgreSQL
SQL Manager 2011 Lite For PostgreSQL
Create trigger
CREATE TRIGGER NomeDoTrigger { BEFORE | AFTER } { evento [ OR ... ] } ON tabela [ FOR [ EACH ] { ROW | STATEMENT } ] EXECUTE PROCEDURE NomeDaFuncao ( argumentos ) Onde: NomeDoTrigger: define o nome do trigger. Before ou After: define se o trigger ser executado antes ou depois da ao que o disparou. Evento: indica qual ao est dispara o trigger. As aes podem ser: insert, update ou delete. O mesmo trigger pode ser disparado por diferentes aes, exemplo: insert or update. Tabela: a tabela a qual o trigger est associado. For each row: indica que o trigger ser executado para cada linha alterada pela ao que o disparou (row-level). For each statement: indica que o trigger ser executado uma nica vez para a ao que o disparou. Essa clusula s suportada a partir da verso 7.4. NomeDaFuncao: o nome da funo que ser executada quando o trigger for disparado. Argumentos: argumentos a serem passados para a funo de trigger.
Exemplo:
SET TERM ^ ;
CREATE TRIGGER LANCAR_ESTOQUE FOR ITEM_ENTRADA_MEDIC ACTIVE AFTER INSERT POSITION 0 as begin update medicamentos set estoque = estoque + new.qtde_medic where cd_medicamento = new.cd_medicamento; end ^ SET TERM ; ^
SET TERM ^ ; CREATE PROCEDURE PRC_VALIDA_ESTOQ_BAIXA ( PCOD_MEDIC INTEGER, PQTDE_MEDIC INTEGER) AS DECLARE VARIABLE VESTOQUE INTEGER; begin select estoque from medicamentos where cd_medicamento = :pcod_medic into :vestoque; if (:pqtde_medic > :vestoque) then exception except_estoque_insuficiente; end^ SET TERM ; ^