在MySQL中创建默认值为false的布尔列?
我想在MySQL中创建一个带有在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
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”是完全正交的。错误代码不是布尔值。