2010-02-08 25 views

Respuesta

152

Debe especificar 0 (es decir, falso) o 1 (es decir, verdadero) como valor predeterminado. Aquí está un ejemplo:

create table mytable (
    mybool boolean not null default 0 
); 

FYI: boolean es un alias para tinyint(1).

Aquí está la prueba:

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: Mi prueba se llevó a cabo en la siguiente versión de MySQL:

mysql> select version(); 
+----------------+ 
| version()  | 
+----------------+ 
| 5.0.18-max-log | 
+----------------+ 
1 row in set (0.00 sec) 
+3

Niza confirmación –

+0

¿O no? En scripts de shell, 0 puede significa exitoso o "verdadero". Sería bueno si MySQL realmente devolviera 'verdadero' y 'falso' para que no tengamos que depender del código para decidir qué significa el valor. – tudor

+3

Dicho sea de paso, dado que boolean es un alias para tinyint (1), eso significa que puede establecer booleanos en números distintos de 0 y 1 y ¡no se quejará! Lo que significa que si accidentalmente incrementa o disminuye el campo, ¡puede estropear sus datos! : -O recomendaría usar un campo ENUM en su lugar. – tudor

8

Uso ENUM en MySQL para la verdadera/falsa que da y acepta el verdadero/valores falsos sin ningún código adicional.

ALTER TABLE `itemcategory` ADD `aaa` ENUM('false', 'true') NOT NULL DEFAULT 'false' 
Cuestiones relacionadas