IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 PostgreSQL Discussion :

Règle sur INSERT et UPDATE


Sujet :

PostgreSQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Couteau suisse
    Inscrit en
    Décembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 8
    Points : 8
    Points
    8
    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
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    create table element( 
      h histo default (now(),null),
      ... etc...,
     );
    pour enregistrer les dates de mises à jour, une fonction trigger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Futur Membre du Club
    Homme Profil pro
    Couteau suisse
    Inscrit en
    Décembre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 8
    Points : 8
    Points
    8
    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.

Discussions similaires

  1. Modification des règles d'insert sur les vues
    Par LeFredBleu dans le forum Requêtes
    Réponses: 0
    Dernier message: 19/05/2010, 00h41
  2. Problème sur INSERT et UPDATE en même temps
    Par harf18 dans le forum Développement
    Réponses: 2
    Dernier message: 09/12/2009, 16h50
  3. trigger "update sur insert" avec insertion multiple
    Par harf18 dans le forum Développement
    Réponses: 4
    Dernier message: 18/05/2009, 15h46
  4. TRIGGER avec inserted + UPDATE sur INSERTED
    Par shaka84 dans le forum Développement
    Réponses: 3
    Dernier message: 12/04/2006, 11h26
  5. événement sur INSERT, DELETE, UPDATE
    Par papouAlain dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/12/2004, 16h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo