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

我想在 MySQL 中创建一个默认值为 falseboolean列表。但它默认接受 NULL..。

290742 次浏览

您必须指定 0(表示 false)或 1(表示 true)作为默认值:

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

仅供参考: booleantinyint(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 表示 true/false,它给出并接受 true/false 值,而不需要任何额外的代码。

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; 您不必显式地指定它。