在MySQL中创建布尔列,将false用作默认值?


127

我想在MySQL中使用boolean默认值为的列创建一个表false。但是它默认接受NULL ...

Answers:


202

您必须指定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)

2
还是呢?在shell脚本中,0表示成功或为“ true”。如果MySQL实际上返回“ true”和“ false”,这样我们就不必依赖代码来决定值的含义了,那就太好了。
2015年

3
顺便说一句,由于布尔值是tinyint(1)的别名,这意味着您可以将布尔值设置为0和1以外的数字,并且不会抱怨!这意味着如果您不小心增加或减少了字段,那么您可能会弄乱数据!:-O我建议改用ENUM字段。
tu-Restate Monica-dor duh 2015年

3
“成功”和“真实”是完全正交的事物。错误代码不是布尔值。

14

在MySQL中使用ENUM表示true / false,它给出并接受true / false值,而无需任何额外的代码。

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

11

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

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

1

如果将布尔列设置为不为null,则默认的'default'值为false;否则,默认值为0。您不必明确指定它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.