blaise Posté(e) le 7 mars 2005 Partager Posté(e) le 7 mars 2005 bonjour et merci de bien vouloir prendre le temps de m'aider un instant. en bref voici mon problème: disons que j'ai deux tables innodb une avec les lots une avec les vente mon obliguation: 0 OU 1 vente (max) par lot. voici un bref détaillé de mes deux tables. moi ce que j'aimerais, c'est que si il y a une vente lo_ve_FK soit différent de 0. si la vente n'a pas eu lieu, il référencie directement la bonne clé dans les ventes. mais dans la configuration actuelle, je n'ai pas le droit d'avoir la clé étrangère à 0. elle doit obliguatoirement référence une vente. j'ai ce problème qui se répercute à pls reprise dans mes relations. et je dois absolument résoudre ce problème avant de programmer la suite de mon application. c'est sans aucun doute un problème de conception auquel je ne pense pas... CREATE TABLE `lot` ( `lo_id` bigint(20) unsigned NOT NULL auto_increment, `lo_ve_FK` int(11) unsigned default '0', PRIMARY KEY (`lo_id`), KEY `lo_ve_FK` (`lo_ve_FK`), CONSTRAINT `lot_ibfk_2` FOREIGN KEY (`lo_ve_FK`) REFERENCES `vente` (`ve_id`), ) ENGINE=InnoDB DEFAULT CHARSET=ascii CREATE TABLE `vente` ( `ve_id` int(11) unsigned NOT NULL auto_increment, `ve_dateacte` date default '0000-00-00', PRIMARY KEY (`ve_id`), ) ENGINE=InnoDB DEFAULT CHARSET=ascii j'espère avoir été assez précis, merci encore de votre attention et j'espère que vous aurez une réponse à me fournir. Lien vers le commentaire Partager sur d’autres sites More sharing options...
LePhasme Posté(e) le 8 mars 2005 Partager Posté(e) le 8 mars 2005 moi ce que j'aimerais, c'est que si il y a une vente lo_ve_FK soit différent de 0. si la vente n'a pas eu lieu, il référencie directement la bonne clé dans les ventes. Tu as une table Vente qui contient des tuples sur des ventes qui n'ont pas eu lieu ? ou alors j'ai rien compris... Lien vers le commentaire Partager sur d’autres sites More sharing options...
blaise Posté(e) le 8 mars 2005 Auteur Partager Posté(e) le 8 mars 2005 wé le pb c que je m'y prenais mal c les ventes qui doivent référencé les lots et pas l'inverse. tous mes problème sont résolu, intégrité nikel. trois jours que je réfléchissais à ce problème et ct pire qu'une idiotie, ct de la pure connerie de ma part. un prof m'a rappelé la notion de maitre esclave aujourd'hui, j'ai refléchis deux minutes et la solution était claire :) merci qd même pour l'aide à titre informatif, après transform çà donne ± çà... CREATE TABLE `lot` ( `lo_id` bigint(20) unsigned NOT NULL auto_increment, `lo_li_FK` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`lo_id`), KEY `lo_li_FK` (`lo_li_FK`), CONSTRAINT `lot_ibfk_1` FOREIGN KEY (`lo_li_FK`) REFERENCES `lieu` (`li_id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=ascii CREATE TABLE `vente` ( `ve_id` bigint(20) unsigned NOT NULL auto_increment, `ve_lo_FK` bigint(20) unsigned NOT NULL default '0', `ve_vend_FK` tinyint(4) unsigned NOT NULL default '0', `ve_op_datefin` date default '0000-00-00', `ve_dateacte` date default '0000-00-00', PRIMARY KEY (`ve_id`), KEY `ve_lo_FK` (`ve_lo_FK`), KEY `ve_vend_FK` (`ve_vend_FK`), CONSTRAINT `vente_ibfk_7` FOREIGN KEY (`ve_lo_FK`) REFERENCES `lot` (`lo_id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `vente_ibfk_8` FOREIGN KEY (`ve_vend_FK`) REFERENCES `vendeur` (`vend_id`) ) ENGINE=InnoDB DEFAULT CHARSET=ascii Lien vers le commentaire Partager sur d’autres sites More sharing options...
blaise Posté(e) le 8 mars 2005 Auteur Partager Posté(e) le 8 mars 2005 lephasme, effectivement je m'étais mal fait comprendre. déso. la phrase correct aurait été moi ce que j'aimerais, c'est que si il y a une vente lo_ve_FK soit différent de 0(réf dans l'autre table). et si la vente n'a pas eu lieu, lo_ve_FK vale 0. mais bon, le pb n'étais pas là comme su dis :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.