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

Función de disparo de Postgres

Antes que nada necesitas un antes desencadenar si desea cambiar un valor de la fila que se está actualizando (o insertando)

En segundo lugar, no necesita "actualizar" la tabla, simplemente asigne el nuevo valor a la NUEVA fila:

create or replace function pardota_masina_veikals() 
RETURNS trigger 
AS 
$pardota_masina$
begin
  IF NEW.sold=true THEN
    NEW.id_shop = NULL;
 END IF;
RETURN NEW;
END;
$pardota_masina$ 
LANGUAGE plpgsql;

CREATE TRIGGER pardota_masina_nevar_but_veikala 
   BEFORE INSERT OR UPDATE ON masinas 
   FOR EACH ROW EXECUTE PROCEDURE pardota_masina_veikals();