Voglio creare una tabella in MySQL con una booleancolonna il cui valore predefinito è false. Ma sta accettando NULL come impostazione predefinita ...
Voglio creare una tabella in MySQL con una booleancolonna il cui valore predefinito è false. Ma sta accettando NULL come impostazione predefinita ...
Risposte:
Devi specificare 0(che significa falso) o 1(che significa vero) come impostazione predefinita. Ecco un esempio:
create table mytable (
mybool boolean not null default 0
);
FYI: booleanè un alias per tinyint(1).
Ecco la prova:
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: Il mio test è stato fatto sulla seguente versione di MySQL:
mysql> select version();
+----------------+
| version() |
+----------------+
| 5.0.18-max-log |
+----------------+
1 row in set (0.00 sec)
Usa ENUM in MySQL per vero / falso che fornisce e accetta i valori vero / falso senza alcun codice aggiuntivo.
ALTER TABLE `itemcategory` ADD `aaa` ENUM('false', 'true') NOT NULL DEFAULT 'false'
Puoi impostare un valore predefinito al momento della creazione come:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
Married boolean DEFAULT false);
Se si imposta la colonna booleana come non nulla, il valore "predefinito" predefinito è falso; non è necessario specificarlo esplicitamente.