【问题标题】:Adding a Boolean column into an existing table将布尔列添加到现有表中
【发布时间】:2012-08-20 06:28:00
【问题描述】:

我正在尝试将布尔列添加到现有表中

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

activerecord 是我的布尔列

这些查询都不起作用。如何向现有表添加布尔列?

【问题讨论】:

  • 尝试更清楚您正在使用的数据库软件——不要只使用标签。
  • Here is the solution 使用 Android Room 的 SQLite 库。

标签: mysql alter


【解决方案1】:

您必须定义要添加的内容 - 列:

alter table chatuser  add column activerecord bool;

【讨论】:

    【解决方案2】:

    缺少COLUMN关键字

    ALTER TABLE ChatUser ADD COLUMN ActiveRecord TinyInt(1)
    

    【讨论】:

    • 有一个bool数据类型。 dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html。这些类型是TINYINT(1)的同义词
    • BOOL 和 BOOLEAN 是 mysql 中 TINYINT(1) 的同义词。
    • smallint 实际上有点浪费。 tinyint 更小,对于bool 来说完全足够了
    • @xdazz 我没有意识到这一点。感谢您的信息
    【解决方案3】:

    添加默认值

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

    【讨论】:

      【解决方案4】:
      ALTER TABLE chatuser ADD activerecord BOOLEAN
      

      不需要“列”这个词

      您的第二个查询在 mysql 中完全没问题(至少)。

      试试:

      select * from chatuser;
      

      如果看不到结果,请检查你的mysql服务器或其他东西,而不是 查询,如果上面的选择查询有效,并且您没有activerecord 已命名列,我敢打赌您的查询会起作用。

      【讨论】:

        【解决方案5】:

        我发现在 Microsoft SQL 上以下内容无效:

        ALTER TABLE meTable ADD COLUMN someBoolCol TinyInt;
        

        省略“列”关键字有效:

        ALTER TABLE meTable ADD someBoolCol TinyInt;
        

        【讨论】:

        • 人们很清楚,OP 询问的是 MySQL,而不是一般的 SQL。 (尽管他们本可以更清楚。)
        猜你喜欢
        • 2012-01-27
        • 1970-01-01
        • 2020-03-12
        • 2012-08-09
        • 1970-01-01
        • 2016-11-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多