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
Partager