PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Função de disparo do Postgres


Antes de mais nada, você precisa de um antes acionar se você quiser alterar um valor da linha que está sendo atualizada (ou inserida)

Em segundo lugar, você não precisa "atualizar" a tabela, apenas atribua o novo valor à linha NOVA:
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();