Précédent   Forum du club des développeurs et IT Pro > Bases de données > PostgreSQL > Débuter
Débuter Forum d'entraide : Débuter en base de données avec PostgreSQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/12/2012, 17h30   #1
Greg_44
Invité de passage
 
Homme Greg
Couteau suisse
Inscription : 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,
Greg_44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2012, 20h50   #2
estofilo
Modérateur
 
Inscription : octobre 2008
Messages : 1 702
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 702
Points : 2 347
Points : 2 347
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();
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2012, 10h51   #3
Greg_44
Invité de passage
 
Homme Greg
Couteau suisse
Inscription : 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
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.
Greg_44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h43.


 
 
 
 
Partenaires

Hébergement Web