+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Homme Profil pro Greg
    Couteau suisse
    Inscrit en
    décembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Nom : Homme Greg
    Localisation : France

    Informations professionnelles :
    Activité : Couteau suisse
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2011
    Messages : 8
    Points : 3
    Points
    3

    Par défaut Règle sur INSERT et UPDATE

    Bonjour,

    Je débute sur PostGres et je bute sur les règles. Voici ma problématique :
    J'ai une table ELEMENTS.
    J'ai un type composé HISTO avec (date_creation,date_modification)
    Je rajoute une colonne HISTO, de type HISTO dans la table ELEMENTS.

    Comment faire pour qu'à chaque insertion, la valeur histo.date_creation soit initialisée avec la date courante ? idem lors d'un UPDATE pour la valeur date_modification.

    Sachant que je ne veux pas réécrire la requête d'insertion dans ma règle car en cas de modification de la table ELEMENTS, je ne veux pas avoir à modifier les règles en conséquences.

    Merci,

  2. #2
    Expert Confirmé
    Profil pro
    Inscrit en
    octobre 2008
    Messages
    1 832
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 832
    Points : 2 768
    Points
    2 768

    Par défaut

    Il ne faut pas utiliser les règles pour ça, il faut faire plus simple.

    pour une valeur par défaut sur insertion, une simple clause DEFAULT:
    Code :
    1
    2
    3
    4
    create table element( 
      h histo default (now(),null),
      ... etc...,
     );
    pour enregistrer les dates de mises à jour, une fonction trigger :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE FUNCTION maj() RETURNS trigger AS
    $$
    BEGIN
     new.h := ((new.h).date_creation,now());
     RETURN NEW;
    END
    $$ LANGUAGE plpgsql;
     
    CREATE TRIGGER montrigger BEFORE UPDATE ON element
      FOR EACH ROW EXECUTE PROCEDURE maj();

  3. #3
    Invité de passage
    Homme Profil pro Greg
    Couteau suisse
    Inscrit en
    décembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Nom : Homme Greg
    Localisation : France

    Informations professionnelles :
    Activité : Couteau suisse
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2011
    Messages : 8
    Points : 3
    Points
    3

    Par défaut

    Impeccable. C'est exactement ce que je veux. Merci beaucoup.

    Par contre, du coup, j'ai du mal à comprendre l’intérêt des règles par rapport aux triggers.

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •