PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Problème de contrainte sur une partie de date (l'année)

Technique - général | Problème de contrainte sur une partie de date (l'année)

Par shefla le 11/04/2006 - 19:44

Bonjour,

Je suis face à un problème que je n'arrive pas a résoudre depuis quelques jours.
Ce problème les contraintes.

Je m'explique, prenons l'exemple suivant :
une table "my_table" avec deux champs
- my_number de type numérique
- my_date de type date

Ce que je cherche à faire est de mettre une contrainte pour interdire d'avoir plus d'un couple
(my_number, année (my_date)).

J'ai essayé avec EXTRACT mais rien n'y fait ca marche pas.

voici plusieurs essais :

CREATE TABLE my_table (
my_number NUMERIC(4),
my_date DATE,
PRIMARY KEY (my_number, EXTRACT (YEAR FROM my_date))
)

CREATE TABLE my_table (
my_number NUMERIC(4),
my_date DATE,
UNIQUE (my_number, EXTRACT (YEAR FROM my_date))
)

CREATE TABLE my_table (
my_number NUMERIC(4),
my_date DATE,
UNIQUE (my_number, date_part('year', my_date))
)

Voila, si vous avez une idée elle est la bienvenue.

Merci d'avance

Shefla

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Bonsoir Le champ my_date a

Christophe Chauvet/ = 11 Avril, 2006 - 21:24

Bonsoir

Le champ my_date au format DATE ne vous sert a rien si c'est juste pour y stocker l'année, un char(4) serait suffisant, ainsi la clef UNIQUE ou PK devient simple, éventuellement si vous avez besoin de stocker le mois et le jour vous pouvez ajouter un autre champ qui ne fera pas partie de la clef.

Cordialement.

Christophe Chauvet
http://kryskool.org/


Merci de ta réponse kryskool

shefla/ = 11 Avril, 2006 - 21:59

Merci de ta réponse kryskool

il me faut les trois données enfin la date complète quoi
le jour, le mois et l'année

le problème est que si je fais trois colonnes ben je perd le controle de la date

à la rigueur, si une fonction pour tester si une date est valide, je pourrais vérifier la cohérence de la date dans un check

En tout cas merci de ta réponse


© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.