Une contrainte pour empêcher l'insertion d'une chaîne vide dans MySQL

Dans cette question j'ai appris à éviter l'insertion d'une valeur NULL. Mais, malheureusement, une chaîne vide est insérée de toute façon. En dehors de la prévention de ce sur le PHP côté, je voudrais utiliser quelque chose comme une contrainte de base de données pour l'en empêcher. Bien sûr, une vérification de l'application est nécessaire, mais j'aimerais qu'il soit sur les deux côtés.

Je suis enseigné que, quelle que soit l'application est de parler à votre base de données, il ne devrait pas être en mesure d'insérer fondamentalement erroné des données. Alors...

CREATE TABLE IF NOT EXISTS tblFoo (
  foo_id int(11) NOT NULL AUTO_INCREMENT,
  foo_test varchar(50) NOT NULL,
  PRIMARY KEY (foo_id)
);

Serait encore me permettre de faire cette insertion:

INSERT INTO tblFoo (foo_test) VALUES ('');

Que je voudrais éviter.

  • Je peux voir vos besoin pour prévenir les cordes à vide et aussi, j'ai appris à éviter de fausser les données insérées à la base de données de niveau. Mais l'expérience m'a appris que vous avez besoin de faire une rigoureuse des coûts/avantages jugement basé sur la complexité de la contrainte. Certaines contraintes sont simples à exprimer au niveau de l'application, mais peut devenir très lourd au niveau base de données. Pire, ils ont tendance à complètement de vous enfermer dans une base de données vendeur si vous en abusez. Juste mon de 0,02$.
  • Une chaîne vide n'est pas la même chose que null, alors il n'est pas " de toute façon à son sujet.
InformationsquelleAutor Whakkee | 2010-03-25