2010-07-27 8 views
1

Je veux avoir un champ dans une table Mysql, qui devrait accepter des entrées ayant une taille fixe - ni plus, ni moins. Les données d'entrée sont un nombre, mais des solutions pour les chaînes peuvent également être considérées, car je n'ai aucun problème pour stocker ces données comme des choses comme varchar.Fixer le nombre de longueur dans mysql

Pour être exact, je veux un type de données qui ne me permettra pas de stocker un nombre qui a moins de 7 ou plus de 7 chiffres. Je ne veux pas utiliser de déclencheurs/procédures stockées.

+0

Validation côté client/serveur – Sarfraz

Répondre

0

Cela peut être possible avec une procédure stockée, mais je ne le ferais pas au niveau de la base de données. Une validation comme celle-ci appartient à votre application.

0

Je ne crois pas qu'il existe actuellement un moyen de réaliser cela dans MySQL sans utiliser de triggers ou de procédures stockées. Si MySQL prend en charge check constraints alors vous pouvez le faire, mais ce n'est pas le cas, donc vous ne pouvez pas.

0

Les solutions possibles sont les suivantes:

  • TRIGGER sur la mise à jour/insertion.
  • Vérification de la contrainte, mais MySQL analyse et supprime rapidement les contraintes de vérification.
  • Validation au niveau de l'application.
  • Clé étrangère d'une table de correspondance contenant les 900 000 entiers de 7 chiffres.

La seule autre suggestion consiste à migrer vers une base de données SQL qui prend en charge les contraintes CHECK.

bases de données open-source qui prennent en charge les contraintes CHECK comprennent:

  • PostgreSQL
  • SQLite
  • Firebird
  • Apache Derby
  • HyperSQL

Chaque base de données commerciale prend également en charge CHÈQUE contraintes.

Fondamentalement, MySQL est la seule base de données SQL sur le marché qui ne supporte pas contraintes CHECK!

+0

"Clé étrangère d'une table de correspondance contenant les 900 000 entiers à 7 chiffres." Aussi connu comme "l'option comédie". – Hammerite

+1

@Hammerite: Hé, il y a toujours une solution à un problème donné avec un ensemble donné de contraintes. Vous pourriez ne pas aimer le compromis de coût, mais cela fonctionnerait! :) –

+0

On dirait que je vais devoir migrer vers un autre serveur de base de données :( – Raj

Questions connexes