Maison >base de données >tutoriel mysql >Comment puis-je empêcher les insertions de chaînes vides dans les tables MySQL ?
Empêcher l'insertion de chaînes vides dans MySQL avec des contraintes
Dans des discussions précédentes, une méthode pour empêcher l'insertion de valeurs NULL dans MySQL a été présentée . Cependant, un oubli a permis d'insérer des chaînes vides malgré la contrainte. Cet article explore les moyens de résoudre ce problème à l'aide de contraintes de base de données, garantissant l'intégrité des données à la fois du côté de la base de données et de l'application.
Considérez la définition de table suivante :
CREATE TABLE IF NOT EXISTS tblFoo ( foo_id int(11) NOT NULL AUTO_INCREMENT, foo_test varchar(50) NOT NULL, PRIMARY KEY (foo_id) );
Cette définition, malgré l'application des Contrainte NOT NULL sur la colonne foo_test, permet toujours l'insertion de chaînes vides :
INSERT INTO tblFoo (foo_test) VALUES ('');
Pour éviter cela, on peut utiliser un CHECK contrainte. Cependant, il est important de noter qu'avant la version 8.0 de MySQL, ce type de contrainte n'était pas supporté. Comme indiqué dans le manuel de référence MySQL :
The CHECK clause is parsed but ignored by all storage engines.
Pour les anciennes versions de MySQL, une solution de contournement consiste à utiliser les déclencheurs comme suggéré. Cependant, pour les développements futurs, il peut être avantageux d'envisager des bases de données offrant un support amélioré pour l'intégrité des données, comme PostgreSQL.
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!