Quiero crear una tabla en MySQL con una boolean
columna cuyo valor predeterminado es false
. Pero está aceptando NULL como predeterminado ...
Quiero crear una tabla en MySQL con una boolean
columna 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: 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 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.