Quiero crear una tabla en MySQL con una booleancolumna cuyo valor predeterminado es false. Pero está aceptando NULL como predeterminado ...
Quiero crear una tabla en MySQL con una booleancolumna cuyo valor predeterminado es false. Pero está aceptando NULL como predeterminado ...
Respuestas:
Debe especificar 0(significado falso) o 1(significado verdadero) como valor predeterminado. Aquí hay un ejemplo:
create table mytable (
mybool boolean not null default 0
);
FYI: booleanes 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 realizó en la siguiente versión de MySQL:
mysql> select version();
+----------------+
| version() |
+----------------+
| 5.0.18-max-log |
+----------------+
1 row in set (0.00 sec)
Use ENUM en MySQL para verdadero / falso que da y acepta los valores verdadero / falso sin ningún código adicional.
ALTER TABLE `itemcategory` ADD `aaa` ENUM('false', 'true') NOT NULL DEFAULT 'false'
Puede establecer un valor predeterminado en el momento de la creación como:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
Married boolean DEFAULT false);
Si está haciendo que la columna booleana no sea nula, entonces el valor predeterminado 'predeterminado' es falso; no tiene que especificarlo explícitamente.