Vous n'êtes pas identifié(e).

#1 Site PostgreSQL.fr » champ NULL et vide » 20/01/2017 15:52:31

arasleva
Réponses : 1

Bonjour,

je n'arrive pas à écrire une requête pour NE PAS récupérer les champs NULL et vide :

J'ai un table avec des valeurs dans le champ1 qui sont soient NULL, soient rempli avec ' '

SELECT table.champ1
FROM table
WHERE table.champ1 <> '' OR table.champ1 IS NOT NULL;

en résultat je récupère dans le champ1 ttes les valeurs qui ne sont pas nulles mais aussi celles qui sont rempli avec ' '

quelqu'un peut-il m'aider ?

Merci

#2 Re : PL/pgSQL » mise à jour du champ clé étrangère » 08/12/2016 11:47:53

Bonjour,


ha en effet si je peux regrouper mes triggers en un seul se serait mieux!! je ne savias pas que cela était possible.


Voici la structure de mes triggers


trigger tablea :


CREATE OR REPLACE FUNCTION exo.tablea_fct_trg()
  RETURNS trigger AS
$BODY$
   BEGIN
      IF TG_OP = 'INSERT' THEN
       

        INSERT INTO exo.tablea (id_a, champa, geom) VALUES (DEFAULT, NEW.champa, NEW.geom);
        RETURN NEW;
      ELSIF TG_OP = 'UPDATE' THEN
       

        UPDATE exo.tablea SET (id_a, champa, geom) = (DEFAULT, NEW.champa, NEW.geom)
        WHERE id_a = NEW.id_a;
        RETURN NEW;
      ELSIF TG_OP = 'DELETE' THEN
       

        DELETE FROM exo.tablea
        WHERE id_a = OLD.id_a;
        RETURN NULL;
      END IF;
      RETURN NEW;
    END;


Trigger tableb :


CREATE OR REPLACE FUNCTION exo.tableb_fct_trg()
  RETURNS trigger AS
$BODY$
   BEGIN
      IF TG_OP = 'INSERT' THEN
       
        INSERT INTO exo.tableb (champb, geom) VALUES (NEW.champb, NEW.geom);
        RETURN NEW;
      ELSIF TG_OP = 'UPDATE' THEN
       

        UPDATE exo.tableb SET (champb, geom) = (NEW.champb, NEW.geom)
        WHERE id_b = NEW.id_b;
        RETURN NEW;
      ELSIF TG_OP = 'DELETE' THEN
       

        DELETE FROM exo.tableb
        WHERE id_b = OLD.id_b;
        RETURN NULL;
      END IF;
      RETURN NEW;
    END;

#3 PL/pgSQL » mise à jour du champ clé étrangère » 07/12/2016 18:44:41

arasleva
Réponses : 2

Bonjour,


j'aimerais savoir comment paramétrer mes tables ou ma vue pour que le champ "foreign key" se remplisse automatiquement.... j'ai bien mis dans la structure de mes tables les contraintes de clés primaires et clé étrangère, j'ai aussi une vue qui reprend l'ensemble des champs de mes 2 tables. Quand je saisie des données dans cette vue, les champ_a et champ_b se remplissent bien mais pas le champ "clé étrangère" a_id........


voici la structure de mes tables :


tablea
   id_a (pk - serial)
   champa


et


tableb
   id_b (pk - serial)
   a_id (fk - integer)
   champb


et voici celle de ma vue :


CREATE OR REPLACE VIEW v_test AS
SELECT


    id_a,
    champa,
    champb,


FROM tablea
   JOIN tableb ON tablea.id_a = tableb.a_id


CREATE TRIGGER tablea_trg
  INSTEAD OF INSERT OR UPDATE OR DELETE
  ON v_form
  FOR EACH ROW
  EXECUTE PROCEDURE tablea_fct_trg();


CREATE TRIGGER tableb_trg
  INSTEAD OF INSERT OR UPDATE OR DELETE
  ON v_form
  FOR EACH ROW
  EXECUTE PROCEDURE tableb_fct_trg();


pouvez-vous m'aider?

Pied de page des forums

Propulsé par FluxBB