|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mars 2003 Messages : 6 ![]() |
Bonjour,
Je suis face à un problème que je n'arrive pas a résoudre depuis quelques jours. Ce problème les contraintes sous PostGreSQL. 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 infructueux : =============================================== CREATE TABLE my_table ( my_number NUMERIC(4), my_date DATE, PRIMARY KEY (my_number, EXTRACT (YEAR FROM my_date)) ) msg erreur ------------- psql:tmp.sql:5: ERROR: syntax error at or near "(" au caractÞre 102 psql:tmp.sql:5: LIGNE 4 : 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)) ) msg erreur ------------- psql:tmp2.sql:6: ERROR: syntax error at or near "(" au caractÞre 97 psql:tmp2.sql:6: LIGNE 4 : 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)) ) msg erreur ------------- psql:tmp3.sql:7: ERROR: syntax error at or near "(" au caractÞre 98 psql:tmp3.sql:7: LIGNE 4 : UNIQUE (my_number, date_part('year', my_date)) =============================================== A chaque fois c'est la fonction EXTRACT qui pose problème, ca fonctionne bien pour les select mais pas pour les contraintes et je n'ai pas trouvé d'équivalence. Voila, si vous avez une idée elle est la bienvenue. Merci d'avance Shefla |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Inscription : octobre 2003 Messages : 668 ![]() |
Hello,
Je pense que c'est juste impossible à faire. En tous cas, je ne vois pas du tout comment il est possible de créer un index sur une valeur calculée. Je pense que la seule solution est d'avoir une colonne de plus ...
__________________
Two beer or not two beer. (Shakesbeer) Question technique par MP => poubelle! |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mars 2003 Messages : 6 ![]() |
Merci de ta réponse Spoutnik
J'ai déja pensé à faire une colonne de plus Pis ben c pas optimal soit ya une colonne date et une année et faut gérer la synchronisation des deux champs soit on coupe la date en trois champs pis ben la il n'y a plus de controle de la date enfin, je pense que si je ne trouve rien de mieux je vai conserver l'idée un champ date et un année. |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : mars 2003 Messages : 6 ![]() |
Est-ce qu'il existe une fonction pour vérifier qu'une date est valide ?
Comme ca je fais trois champs et je met la vérification dans un check |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com