Lorsque vous tentez d'insérer des données dans une table sans spécifier explicitement une valeur pour une colonne non nullable qui manque une valeur par défaut, MySQL peut générer une erreur indiquant "Le champ n'a pas de valeur par défaut" (Erreur No. 1364).
Un utilisateur a rencontré cette erreur lors de l'insertion dans une table avec le schéma suivant :
CREATE TABLE try ( name VARCHAR(8), CREATED_BY VARCHAR(40) NOT NULL );
Un déclencheur a été créé pour remplir automatiquement le Champ CREATED_BY avec le nom d'utilisateur :
CREATE TRIGGER autoPopulateAtInsert BEFORE INSERT ON try FOR EACH ROW SET NEW.CREATED_BY = USER();
Cependant, tenter d'insérer une ligne en utilisant ce qui suit requête :
INSERT INTO try (name) VALUES ('abc');
aboutit toujours au message d'erreur.
Le message d'erreur est le résultat de la définition du mode SQL STRICT_TRANS_TABLES dans le fichier de configuration MySQL ( my.ini ou similaire). Ce mode applique des règles strictes concernant les valeurs par défaut pour les colonnes non nullables. Pour résoudre le problème, l'utilisateur doit :
Alternativement, l'utilisateur peut créer une valeur par défaut pour le champ CREATED_BY à l'aide du Instruction ALTER TABLE. Cependant, cette approche peut ne pas convenir si le déclencheur est destiné à définir dynamiquement la valeur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!