JeuWeb - Crée ton jeu par navigateur
MySQL, clés étrangères et valeur null - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : MySQL, clés étrangères et valeur null (/showthread.php?tid=5510)

Pages : 1 2


RE: MySQL, clés étrangères et valeur null - Bertrand - 01-07-2011

NULL est plus une absence de valeur qu'autre chose. A ce titre, il doit être traité différemment dans les index (uniques), les contraintes ...
Tu n'utiliserais pas le moteur de tables Berkeley (BDB) ? D'après la doc, c'est le seul qui gère 'NULL' comme une valeur quelconque :
A UNIQUE index creates a constraint such that all values in the index must be distinct. An error occurs if you try to add a new row with a key value that matches an existing row. This constraint does not apply to NULL values except for the BDB storage engine. For other engines, a UNIQUE index permits multiple NULL values for columns that can contain NULL. If you specify a prefix value for a column in a UNIQUE index, the column values must be unique within the prefix.

J'ai le sentiment que le 2nd problème découle du 1er, mais si tu n'utilises pas BDB ça ne tient pas...


RE: MySQL, clés étrangères et valeur null - Dexyne - 01-07-2011

J'utilise InnoDB je ne connaissais d'ailleurs pas Berkeley et BDB ^^'.
Merci quand même de ta réponse, mais du coup j'ai retirer l'unicité pour simplifier ou rendre possible un ajout NULL, je vérifie via PHP que la valeur entré ne soit pas mise en double (hors NULL) et j'insère si c'est ok Smile.
Donc mon premier problème est en soit résolu, par contre pour le deuxième je ne vois pas comment le changer hormis via ma solution actuelle, bien que je ne la trouve pas très "propre".


RE: MySQL, clés étrangères et valeur null - Bertrand - 01-07-2011

Si tu dois gérer manuellement tes contraintes, c'est sur, tu vas t'amuser
Si tu peux extraire de ton code de quoi reproduire tes pb (donc les requêtes de création de table/contraintes, et les insert ou update), je veux bien le faire tourner de mon côté.


RE: MySQL, clés étrangères et valeur null - Dexyne - 01-07-2011

Comment ça manuellement ?
Dans le premier cas je vérifie simplement par PHP que le champ n'existe pas déjà.
Pour le deuxième je créer un champs null dans la table puis l'affiche dans mes formulaires, lors de l'insertion il va considérer le champs null comme bon puisqu'il a un id dans la table qui le détient (et la table ayant la foreign key a un id de rempli).
Par contre si je veux lister toute la catégorie je dois virer les champs "null" ou du moins le premier, ce qui n'est pas très pratique.
Pour le code je verrais éventuellement, je dois d'abord le récupérer puis le mettre sur mon PC :p.