En SQLite, le mieux que vous puissiez faire est d'utiliser les entiers 0 et 1 pour représenter le faux et le vrai. Vous pourriez déclarer le type de colonne comme ceci :
CREATE TABLE foo(mycolumn BOOLEAN NOT NULL CHECK (mycolumn IN (0, 1)));
Omettre le NOT NULL
si vous voulez permettre NULL
en plus de 0 et 1.
L'utilisation du nom de type BOOLEAN
ici est pour la lisibilité, pour SQLite c'est juste un type avec une affinité NUMERIQUE .
Notez que Contraintes de CHECK ont été soutenus depuis SQLite 3.3.0 (2006).
Voici quelques exemples d'INSERTs qui fonctionneront : (notez comment les chaînes de caractères et les nombres à virgule flottante sont analysés comme des entiers)
sqlite> INSERT INTO foo VALUES(0);
sqlite> INSERT INTO foo VALUES(1);
sqlite> INSERT INTO foo VALUES(0.0);
sqlite> INSERT INTO foo VALUES(1.0);
sqlite> INSERT INTO foo VALUES("0.0");
sqlite> INSERT INTO foo VALUES("1.0");
sqlite> select mycolumn, typeof(mycolumn) from foo;
0|integer
1|integer
0|integer
1|integer
0|integer
1|integer
et d'autres qui vont échouer :
sqlite> INSERT INTO foo VALUES("-1");
Error: constraint failed
sqlite> INSERT INTO foo VALUES(0.24);
Error: constraint failed
sqlite> INSERT INTO foo VALUES(100);
Error: constraint failed
sqlite> INSERT INTO foo VALUES(NULL);
Error: foo.mycolumn may not be NULL
sqlite> INSERT INTO foo VALUES("true");
Error: constraint failed
sqlite> INSERT INTO foo VALUES("false");
Error: constraint failed
0 votes
Bien que SQLite n'ait pas de type de données booléen, il supporte littéraux booléens