Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/05/2011, 13h05   #1
Invité régulier
 
Développeur informatique
Inscription : septembre 2005
Messages : 54
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2005
Messages : 54
Points : 8
Points : 8
Envoyer un message via AIM à Snark Envoyer un message via MSN à Snark
Par défaut Contraintes dans les tables InnoDB

Bonjour,

Je suis sur le problème très bête de contrainte innodb, que voici:

J'ai d'abord 2 tables comme celà:
Code :
Table1: id, status_id, autres_truc
Code :
Table2: id, status_id, autres_truc
Pour les textes des status, j'ai une troisième table regroupant tout les status possible:
Code :
TableStatus: id, skey, text
Dans le principe, pour avoir un status, la table1 fera une requete dans TableStatus avec
Code :
(TableStatus.skey=1 ET Table1.status_id=TableStatus.id)
et table2 fera
Code :
(TableStatus.skey=2 ET Table2.status_id=TableStatus.id)
Le problème c'est que pour les constraintes de tables, je n'arrive pas a forcer en dur une valeur dans la contrainte. J'ai bien essayé:
Code :
ALTER TABLE Table1 ADD CONSTRAINT untruc FOREIGN KEY (status_id,1) REFERENCES TableStatus(id,skey)
Mais je me fais jeter sur la syntaxe.
Y'a-t-il moyen de faire une vrai contrainte de ce genre ?

Merci à vous.
Snark.
Snark est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 10h07   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 000
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 000
Points : 18 265
Points : 18 265
Envoyer un message via MSN à CinePhil
À ce que je comprends, les statuts de la table 1 et de la table 2 sont strictement différents. ce ne sont donc pas les mêmes groupes de données et il devrait y avoir deux tables de statuts.

Au lieu de l'abstraction Table1 et Table2, tu peux nous dire ce que contiennent ces tables et ce que sont les statuts ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 10h32   #3
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
Vous essayez de melanger une contrainte technique et une contrainte fonctionnelle.

Le mieux est de créer une contrainte technique (contrainte d"intégrité relationnelle entre vos tables) et d'ajouter une contrainte fonctionnelle

Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h18.


 
 
 
 
Partenaires

Hébergement Web