Maison > base de données > tutoriel mysql > Comment puis-je empêcher l'insertion de chaînes vides dans les tables MySQL sans vérifications côté application ?

Comment puis-je empêcher l'insertion de chaînes vides dans les tables MySQL sans vérifications côté application ?

Patricia Arquette
Libérer: 2024-11-22 07:32:13
original
1020 Les gens l'ont consulté

How Can I Prevent Empty String Insertion into MySQL Tables Without Application-Side Checks?

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)
);
Copier après la connexion

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;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal