向现有表中添加布尔列

33

我想在一个已有的表中添加一个布尔类型的列。

alter table chatuser add activerecord bool;
alter table chatuser add activerecord boolean;

activerecord是我的布尔类型列。

这两个查询都不起作用。我该如何向现有表添加布尔类型列?


尽量明确你正在使用哪种数据库软件,不要只使用标签。 - Ben Wheeler
这里是使用Android Room的SQLite库的解决方案:[https://dev59.com/4FYM5IYBdhLWcg3w3TCF#55304942]。 - AdamHurwitz
5个回答

52

你必须定义你要添加什么 - 一个列:

alter table chatuser  add column activerecord bool;

17

缺少 COLUMN 关键字

ALTER TABLE ChatUser ADD COLUMN ActiveRecord TinyInt(1)

3
有一个布尔数据类型。这些类型是 TINYINT(1) 的同义词。参考链接:http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html。 - juergen d
9
在MySQL中,BOOL和BOOLEAN是TINYINT(1)的同义词。 - xdazz
1
smallint 实际上有点浪费。tinyint 更小,对于 bool 完全足够。 - juergen d
@xdazz,我之前不知道这个。谢谢你提供的信息。 - Arefe

14

使用默认值进行加法计算

ALTER TABLE my_table ADD COLUMN new_field TinyInt(1) DEFAULT 0;

2
我发现在Microsoft SQL中以下内容是无效的:

ALTER TABLE meTable ADD COLUMN someBoolCol TinyInt;

省略“column”关键字是有效的:
ALTER TABLE meTable ADD someBoolCol TinyInt;

只是为了让大家清楚,OP问的是MySQL,而不是一般的SQL。(虽然他们本可以更明确。) - Ben Wheeler

2
ALTER TABLE chatuser ADD activerecord BOOLEAN

无需使用“列”这个词。
你的第二个查询语句在MySQL中是完全正确的(至少)。
尝试:
select * from chatuser;

如果您无法看到结果,请检查您的mysql服务器或其他事项,而不是查询。如果上述选择查询起作用,并且您没有名为activerecord的列,我敢打赌您的查询将起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接