PostgreSQL et l'heritage... petit soucis...

Le
WebShaker
salut j'essaye l'heritage de class sous postgresql que je trouve bien
utile pour pouvoir relier plusieurs objet en eux sans me soucier de leur
type. mais

soit la base suivante
CREATE TABLE obj (
idobj serial,
PRIMARY key (idobj)
);

CREATE TABLE carre (
decription text
PRIMARY key (idobj)
) INHERITS (obj);

CREATE TABLE rond (
decription text
PRIMARY key (idobj)
) INHERITS (obj);

CREATE TABLE obj_link (
idobj1 integer,
idobj2 integer,
PRIMARY key (idobj1, idobj2),
FOREIGN key (idobj1) REFERENCES obj (idobj),
FOREIGN key (idobj2) REFERENCES obj (idobj)
);


INSERT INTO carre (description) VALUES ('carre1');
INSERT INTO carre (description) VALUES ('carre2');
INSERT INTO rond (description) VALUES ('rond1');
INSERT INTO rond (description) VALUES ('rond2');
INSERT INTO carre (description) VALUES ('carre3');

J'ai donc mes 5 objets qui on donc une meme sequence et donc des idobj
différent

mon probleme est que je ne peux absolument pas executer un lien en deux
object différent.

J'execute
INSERT INTO obj_link (idobj1, idobj2) VALUES (2, 3);

dans l'espoir d'arriver à lier mon carre2 avec mon rond1.
Mais voila mes contraintes d'intégrité m'empêchent de faire cela

C'est bien dommage.
Donc évidement je peux faire sauter les contraintes, mais cela me
perturbe un peu.

Y a t-il une solution pour me permettre de faire cela?

Peut-être a partir d'un trigger !!!
Je sais pas exactement ce que c'est au juste, mais il me semble que
c'est un truc qui s'éxecute à chaque modification d'un enregistrement ! non.

Y a t-il un autre moyen de créer ces FOREIGN KEY puisque les deux
entrées sont évidement dans ma table obj.

Merci

Etienne
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sebastien Lardiere
Le #21924661
Le 03/02/2010 23:53, WebShaker a écrit :

Y a t-il un autre moyen de créer ces FOREIGN KEY puisque les deux
entrées sont évidement dans ma table obj.



Salut,

Non, justement, les données sont physiquement dans les tables filles, et
la vérification de la FK se fait en utilisant SELECT FROM ONLY

select * from obj ;


idobj
-------
1
2
5
3
4
(5 lignes)

select * from only obj ;


idobj
-------
(0 lignes)


--
Sébastien
WebShaker
Le #21924651
Non, justement, les données sont physiquement dans les tables filles, et
la vérification de la FK se fait en utilisant SELECT FROM ONLY



Ben c'est moche ;)
on ne peut pas forcer le FK a ne pas utiliser FROM ONLY ???

Etienne
Publicité
Poster une réponse
Anonyme