在MySQL中创建boolean列,默认值为false?

use*_*258 114 mysql

我想在MySQL中创建一个表,boolean其默认值为false.但它接受NULL为默认值...

Asa*_*aph 187

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

create table mytable (
     mybool boolean not null default 0
);
Run Code Online (Sandbox Code Playgroud)

仅供参考: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)
Run Code Online (Sandbox Code Playgroud)

仅供参考:我的测试是在以下版本的MySQL上完成的:

mysql> select version();
+----------------+
| version()      |
+----------------+
| 5.0.18-max-log |
+----------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一下,由于boolean是tinyint(1)的别名,这意味着你可以将布尔值设置为0和1以外的数字,它不会抱怨!这意味着如果您不小心增加或减少了字段,那么您可能会搞砸数据!:-O我建议使用ENUM字段. (3认同)
  • 或者是吗?在shell脚本中,0可以表示成功或"真实".如果MySQL实际返回'true'和'false'会很好,这样我们就不必依赖代码来决定值的含义. (2认同)
  • “成功”和“真实”是完全正交的事物。错误代码不是布尔值。 (2认同)

小智 12

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

ALTER TABLE `itemcategory` ADD `aaa` ENUM('false', 'true') NOT NULL DEFAULT 'false'
Run Code Online (Sandbox Code Playgroud)


小智 8

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

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