Création de table et contrainte d'exclusivité

Eléphant du PHP | 360 Messages

25 juin 2007, 14:43

Bonjour

Code : Tout sélectionner

CREATE TABLE A ( champ_A_1 INT(3) NOT NULL, PRIMARY KEY (champ_A_1) ); CREATE TABLE B ( champ_B_1 INT(3) NOT NULL, PRIMARY KEY (champ_B_1) );
Comment créer une table C qui aura un champ_C_1 sachant que ce champ prendra comme valeur soit une valeur contenue dans le champ_A_1 soit dans le champ_B_1 (comme une clé étrangère quoi) ?
Dites ce que je fais, ne faites pas ce que je dis ...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

25 juin 2007, 17:49

Bonjour,

Code : Tout sélectionner

CREATE TABLE C ( champ_C_1 INT(3) NOT NULL, PRIMARY KEY (champ_C_1) );
(ne me remercie pas, c'est cadeau ;) )

...après si tu veux que les insertions dans ta table C soient automatiques, alors ce n'est plus du SQL pur mais des procédures stockées et là :
1) c'est pas évident à prendre en main si tu n'en a jamais fait
2) ça dépend de la base de données que tu utilises (Oracle, MySQL, Postgre...)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 360 Messages

25 juin 2007, 18:39

Bonjour,

Code : Tout sélectionner

CREATE TABLE C ( champ_C_1 INT(3) NOT NULL, PRIMARY KEY (champ_C_1) );
(ne me remercie pas, c'est cadeau ;) )

...après si tu veux que les insertions dans ta table C soient automatiques, alors ce n'est plus du SQL pur mais des procédures stockées et là :
1) c'est pas évident à prendre en main si tu n'en a jamais fait
2) ça dépend de la base de données que tu utilises (Oracle, MySQL, Postgre...)
Sisi !!! Je tiens a te remercier :lol:
T'inquietes les procédures stockées je connais (enfin je maitrise pas non plus, c'est ca de ne pas trop écouter les cours :-()
Mais pour en revenir a mon "probleme" : Logiquement on doit toujours le spécifier quand une table fait référence à une autre donc c'est pour ca que je n'ai pour le moment pas choisi ta solution ... J'essaye de joindre mon prof mais il me laisse dans le vent :P
Enfin bref de toute facon ma base "non propre" est exactement comme le code que tu as mis mais j'aimerais la faire dans les règles de l'art si possible ...

Merci de ta réponse en tout cas !
Dites ce que je fais, ne faites pas ce que je dis ...