Vérifier qu'un libellé de variable existe dans BD

Eléphant du PHP | 91 Messages

01 août 2007, 16:23

[quote="Sékiltoyai"]Normalement, tu peux mettre une clé primaire sur deux champs :

Code : Tout sélectionner

ALTER TABLE machin ADD PRIMARY KEY(colonne1, colonne2);
Si je te comprends bien, je devrais donc restructurer ma table ainsi:
ech_trav_min, primary key
ech_trav_max, primary key

Et là, je ne devrais plus avoir de problème, je n'aurai pas de redondance de libellé?


Ryle,
mes champs ne sont pas vides, donc ma requête devrait me renvoyer quelquechose d'autant que dans PgAdmin, le count me renvoie la bonne valeur.

ViPHP
ViPHP | 5924 Messages

01 août 2007, 16:31

Non, ta table reste :
ech_trav_id, serial
ech_trav_min, int
ech_trav_max, int
Mais au lieu d'avoir une clé :
PRIMARY KEY(ech_trav_id)
Tu as deux clés :
PRIMARY KEY(ech_trav_id)
PRIMARY KEY(ech_trav_min, ech_tra_max)
La première te sert surtout à indéxer ton serial (le serial est automatiquement unique vu qu'il est géré par PostgreSQL).
La seconde te sert à rendre le couple (ech_trav_min, ech_tra_max) unique et l'indéxer, de manière à empêcher l'enregistrement de 2 couples identiques, ce que tu cherches à faire par un select, mais qui est sensé se faire dans les bases de données dans les systèmes bien conçus, et à accélérer la recherche lorsque tu essayes de chercher un couple précis.