sql >> Base de Datos >  >> RDS >> PostgreSQL

PostgreSQL:Comprobación de NUEVO y VIEJO en una función para un disparador

El enfoque habitual para hacer que una función de disparo haga cosas diferentes dependiendo de cómo se disparó el disparador es verificar la operación del disparador a través de TG_OP

CREATE OR REPLACE FUNCTION update_table_count()
RETURNS trigger AS
$$
DECLARE 
  updatecount INT;
BEGIN
  if tg_op = 'UPDATE' then 
    select count(*) into updatecount from source_table where id = new.id;
    update dest_table set count=updatecount where id = new.id;
  elsif tg_op = 'DELETE' then 
    ... do something else
  end if;
  RETURN NEW;
END;
$$
LANGUAGE plpgsql;

Sin relación, pero:el nombre del idioma es un identificador. No lo cite usando comillas simples.