【发布时间】:2010-02-08 11:00:44
【问题描述】:
我想在 MySQL 中创建一个带有 boolean 列的表,其默认值为 false。但它默认接受 NULL...
【问题讨论】:
标签: mysql
我想在 MySQL 中创建一个带有 boolean 列的表,其默认值为 false。但它默认接受 NULL...
【问题讨论】:
标签: mysql
您必须指定0(表示假)或1(表示真)作为默认值。这是一个例子:
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)
【讨论】:
mytable (mybool tinyint(1) NOT NULL DEFAULT 0 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
您可以在创建时设置默认值,例如:
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
Married boolean DEFAULT false);
【讨论】:
在 MySQL 中使用 ENUM 表示 true / false,它给出并接受 true / false 值,无需任何额外代码。
ALTER TABLE `itemcategory` ADD `aaa` ENUM('false', 'true') NOT NULL DEFAULT 'false'
【讨论】:
如果您将布尔列设置为非空,则默认的“默认”值为 false;您不必明确指定它。
【讨论】: