C'est bien ça le DDL (Data Definition Language) : c'est à dire la partie du langage SQL qui permet de créer (CREATE), modifier (ALTER) ou supprimer (DROP) des objets de la base de données.
On voit dans ce script que la colonne IDSouhaits n'est absolument pas un identifiant attribué par le SGBD, c'est à dire un identifiant auto-incrémenté pour MySQL, mais un varchar sans valeur par défaut. De ce fait, c'est non seulement un très mauvais type de données pour une clef primaire (encombrant, sensible à la collation, sensible aux changements de longeur en cas de mise à jour de la valeur, et le plus souvent d'un contenu signifiant donc instable), mais aussi une colonne dont la valeur doit
obligatoirement être fournie lors de l'insert puisqu'aucune valeur par défaut n'est donnée.
Remplacez ce type varchar par un type integer avec la propriété auto_increment et le problème sera résolu
EDIT et j'oubliais l'essentiel : il faut ajouter la contrainte Primary Key sur la colonne IDSouhaits
Egalement, tant qu'à faire, renommez la table "Souhait
s" en "Souhait" et la colonne "IDSouhait
s" en "IDSouhait"
Pour la table : c'est une évidence que toute table peut contenir plusieurs occurrences, le "s" n'est donc pas requis, de plus, le nom de la table vient de "l'individu" au stade conceptuel, matérialisé par le type d'entité. D'où le singulier.
Pour la colonne : là c'est encore pire, par définition, un identifiant sert à reconnaitre une et une seule ligne dans la table, le "s" est donc interdit !
Partager