在MySQL中创建默认值为false的布尔列?

在MySQL中创建默认值为false的布尔列?,mysql,Mysql,我想在MySQL中创建一个带有boolean列的表,该列的默认值为false。但是它接受NULL作为默认值…您必须指定0(表示false)或1(表示true)作为默认值。以下是一个例子: create table mytable ( mybool boolean not null default 0 ); 仅供参考:boolean是tinyint(1)的别名 这是证据: mysql> create table mytable ( -> myboo

我想在MySQL中创建一个带有
boolean
列的表,该列的默认值为
false
。但是它接受NULL作为默认值…

您必须指定
0
(表示false)或
1
(表示true)作为默认值。以下是一个例子:

create table mytable (
     mybool boolean not null default 0
);
仅供参考:
boolean
tinyint(1)
的别名

这是证据:

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)
仅供参考:我的测试是在以下版本的MySQL上完成的:

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

在MySQL中使用ENUM表示真/假,它给出并接受真/假值,无需任何额外代码

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

您可以在创建时设置默认值,如:

CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
Married boolean DEFAULT false);

如果要使布尔列不为null,则默认的“default”值为false;您不必显式地指定它。

还是这样?在shell脚本中,0可以表示成功或“true”。如果MySQL真的返回'true'和'false'就好了,这样我们就不必依赖代码来决定值的含义。顺便说一句,由于boolean是tinyint(1)的别名,这意味着您可以将boolean设置为0和1以外的数字,它不会抱怨!这意味着如果您不小心增加或减少了字段,那么您可能会弄乱数据!:-O我建议改为使用枚举字段。“Successful”和“true”是完全正交的。错误代码不是布尔值。