Empêcher l'insertion de chaînes vides dans MySQL avec des contraintes
Dans cette requête, l'utilisateur a réussi à empêcher l'insertion de valeurs NULL dans une table de base de données . Cependant, ils souhaitent également empêcher l'insertion de chaînes vides sans s'appuyer uniquement sur des vérifications côté application.
Pour y parvenir en utilisant une contrainte de base de données, nous pouvons ajouter une contrainte CHECK à la définition de la table :
CREATE TABLE IF NOT EXISTS tblFoo ( foo_id int(11) NOT NULL AUTO_INCREMENT, foo_test VARCHAR(50) NOT NULL CHECK (foo_test <> ''), PRIMARY KEY (foo_id) );
Cette contrainte garantit que la colonne foo_test ne peut pas contenir de chaînes vides. Cependant, il est important de noter que dans les versions MySQL antérieures à 8.0, les contraintes CHECK sont analysées mais ignorées par tous les moteurs de stockage. Par conséquent, une chaîne vide peut toujours être insérée dans la table.
En guise de solution de contournement, l'utilisateur peut envisager d'utiliser des déclencheurs pour appliquer la contrainte :
CREATE TRIGGER trg_tblFoo_prevent_empty_string BEFORE INSERT ON tblFoo FOR EACH ROW BEGIN IF NEW.foo_test = '' THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Empty string not allowed in foo_test column'; END IF; END;
Ce déclencheur générera une erreur et empêcher l'insertion d'une chaîne vide dans la colonne foo_test.
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!