Eu quero criar uma tabela no MySQL com uma boolean
coluna cujo valor padrão é false
. Mas está aceitando NULL como padrão ...
Eu quero criar uma tabela no MySQL com uma boolean
coluna cujo valor padrão é false
. Mas está aceitando NULL como padrão ...
Respostas:
Você deve especificar 0
(significando falso) ou 1
(verdadeiro) como padrão. Aqui está um exemplo:
create table mytable (
mybool boolean not null default 0
);
FYI: boolean
é um apelido para tinyint(1)
.
Aqui está a 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: Meu teste foi realizado na seguinte versão do MySQL:
mysql> select version();
+----------------+
| version() |
+----------------+
| 5.0.18-max-log |
+----------------+
1 row in set (0.00 sec)
Use ENUM no MySQL para true / false que fornece e aceita valores true / false sem nenhum código extra.
ALTER TABLE `itemcategory` ADD `aaa` ENUM('false', 'true') NOT NULL DEFAULT 'false'
Você pode definir um valor padrão no momento da criação, como:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
Married boolean DEFAULT false);
Se você estiver tornando a coluna booleana como não nula, o valor padrão será "false"; você não precisa especificá-lo explicitamente.