Para os gatilhos no banco de dados corrente que especificam uma lista
de colunas (como UPDATE OF coluna1, coluna2),
a visão triggered_update_columns
identifica estas colunas.
Os gatilhos que não especificam uma lista de colunas não são
incluídos nesta visão.
Somente são mostradas as colunas que o usuário corrente é o dono ou
tem algum privilégio diferente de SELECT ativo.
Tabela 35.54. Colunas de triggered_update_columns
Coluna Tipo de dados Descrição |
|---|
Nome do banco de dados que contém o gatilho (sempre o banco de dados corrente) |
Nome do esquema que contém o gatilho |
Nome do gatilho |
Nome do banco de dados que contém a tabela na qual o gatilho está definido (sempre o banco de dados corrente) |
Nome do esquema que contém a tabela na qual o gatilho está definido |
Nome da tabela na qual o gatilho está definido |
Nome da coluna na qual o gatilho está definido |
Exemplo 35.51. Exemplo do tradutor
Gatilhos que especificam uma lista de colunas
Uso do esquema de informações para mostrar os gatilhos no
banco de dados ana da
usuária ana
que especificam uma lista de colunas.
Veja a criação da tabela
pessoa_tipada em
Exemplo da visão tables.
Foi usado o jsonb para eliminar as colunas com
valor nulo e formatar a saída.
-- Cálculo do Índice de Massa Corporal
CREATE OR REPLACE FUNCTION imc_valor()
RETURNS TRIGGER AS $$
BEGIN
NEW.imc= NEW.peso_kg / POWER((NEW.altura_cm / 100), 2);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE FUNCTION
-- Gatilho para inserir ou atualizar o Índice de Massa Corporal
CREATE OR REPLACE TRIGGER trg_imc_valor
BEFORE INSERT OR UPDATE OF altura_cm, peso_kg
ON pessoa_tipada
FOR EACH ROW
EXECUTE FUNCTION imc_valor();
CREATE TRIGGER
INSERT INTO pessoa_tipada (nome, altura_cm, peso_kg)
VALUES ('José', 170, 70);
INSERT 0 1
SELECT * FROM pessoa_tipada;
nome | altura_cm | peso_kg | imc ------+-----------+---------+--------------------- José | 170 | 70 | 24.2214532871972318 (1 linha)
SELECT jsonb_pretty(jsonb_strip_nulls(to_jsonb(t))) FROM information_schema.triggered_update_columns t;
jsonb_pretty
--------------------------------------------
{ +
"trigger_name": "trg_imc_valor", +
"trigger_schema": "public", +
"trigger_catalog": "ana", +
"event_object_table": "pessoa_tipada",+
"event_object_column": "peso_kg", +
"event_object_schema": "public", +
"event_object_catalog": "ana" +
}
{ +
"trigger_name": "trg_imc_valor", +
"trigger_schema": "public", +
"trigger_catalog": "ana", +
"event_object_table": "pessoa_tipada",+
"event_object_column": "altura_cm", +
"event_object_schema": "public", +
"event_object_catalog": "ana" +
}
(2 linhas)