Je souhaite créer une table dans MySQL avec une booleancolonne dont la valeur par défaut est false. Mais il accepte NULL par défaut ...
Je souhaite créer une table dans MySQL avec une booleancolonne dont la valeur par défaut est false. Mais il accepte NULL par défaut ...
Réponses:
Vous devez spécifier 0(ce qui signifie faux) ou 1(ce qui signifie vrai) comme valeur par défaut. Voici un exemple:
create table mytable (
mybool boolean not null default 0
);
FYI: booleanest un alias pour tinyint(1).
Voici la preuve:
mysql> create table mytable (
-> mybool boolean not null default 0
-> );
Query OK, 0 rows affected (0.35 sec)
mysql> insert into mytable () values ();
Query OK, 1 row affected (0.00 sec)
mysql> select * from mytable;
+--------+
| mybool |
+--------+
| 0 |
+--------+
1 row in set (0.00 sec)
FYI: Mon test a été effectué sur la version suivante de MySQL:
mysql> select version();
+----------------+
| version() |
+----------------+
| 5.0.18-max-log |
+----------------+
1 row in set (0.00 sec)
Utilisez ENUM dans MySQL pour vrai / faux, il donne et accepte les valeurs vrai / faux sans aucun code supplémentaire.
ALTER TABLE `itemcategory` ADD `aaa` ENUM('false', 'true') NOT NULL DEFAULT 'false'
Vous pouvez définir une valeur par défaut au moment de la création comme:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
Married boolean DEFAULT false);
Si vous rendez la colonne booléenne non nulle, la valeur par défaut «par défaut» est false; vous n'avez pas à le spécifier explicitement.