2010-08-14 8 views
3

Bonjour les gars, je suis un débutant désolé pour ma question :)MySQL valeurs limites à 1 et 0

je l'ai déjà essayé d'utiliser char, tinyint, bool et contrainte CHECK.

Voilà ma contrainte CHECK:

CHECK (user_type>=0 AND user_type<=1) 

Mais encore je peux insérer des valeurs plus de 1, tout ce que je veux est juste 1 et 0. Je vais l'utiliser comme type de mes utilisateurs. Bien que je puisse valider cela au niveau frontal, je veux toujours le faire dans une base de données elle-même.

Merci à l'avance :)

+0

connexes: http://stackoverflow.com/questions/3414421/does-my-sql-supports-check-constraint –

+0

'INT (1)' ne fonctionne pas? – strager

+0

strager - Les colonnes 'INT' peuvent contenir des valeurs autres que 0 et 1. Le '(1)' définit uniquement la largeur d'affichage; il ne contraint pas les valeurs qui peuvent être stockées. Même si cela limitait les valeurs stockées, vous seriez quand même capable de stocker de 2 à 9. – Hammerite

Répondre

3

La clause CHECK est analysée mais ignorée par tous les moteurs de stockage. Si vous voulez vraiment le faire, vous pouvez créer une table contenant les valeurs 0 et 1 et configurer une contrainte de clé étrangère.

+0

Alors, quelle est votre suggestion Sir Mark? – Barry

+0

ahh ok, je pense que ce serait le faire, merci. Encore une fois, désolé pour ma question, je sais que c'est sacrément simple pour vous les gars, encore un étudiant ici, merci :) – Barry

0

Si vous voulez vraiment que cette contrainte soit appliquée, faites une table boolconstants avec ces 2 valeurs et utilisez une contrainte de clé étrangère. Bit d'un hack mais fonctionne pour toutes les valeurs enum :)

4

utiliser set ou enum comme type de colonne. puis définissez les valeurs (par exemple: 1,0) :)

Questions connexes