PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Fonction de déclenchement Postgres

Tout d'abord, vous avez besoin d'un avant déclencheur si vous souhaitez modifier une valeur de la ligne en cours de mise à jour (ou d'insertion)

Deuxièmement, vous n'avez pas besoin de "mettre à jour" la table, affectez simplement la nouvelle valeur à la NOUVELLE ligne :

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();