【问题标题】:How to add a boolean datatype column to an existing table in sql?如何将布尔数据类型列添加到sql中的现有表?
【发布时间】:2016-10-25 15:37:28
【问题描述】:

我的数据库中有一个名为 person 的表。我想向同一个表中添加另一列,它是一个布尔数据类型列。我尝试了以下查询,但它说 syntax error 接近默认值。我知道这是一个常见的问题,并且有很多答案。我已经尝试了很多,但无法弄清楚如何让它发挥作用。所以请帮助我。

我尝试过的查询

ALTER TABLE person add column "AdminApproved" BOOLEAN SET default FALSE;
ALTER TABLE person alter column "AdminApproved" BOOLEAN SET default FALSE;         

我也试过不使用 SET 关键字。

【问题讨论】:

  • 如果您搜索“布尔数据类型 sql server”,Google 上什么都没有??你是对的,这非常普遍,而且有很多答案。

标签: sql sql-server alter-table


【解决方案1】:

在 SQL SERVER 中它是 BIT,尽管它允许存储 NULL

ALTER TABLE person add  [AdminApproved] BIT default 'FALSE';

您的查询中还有其他错误

  1. 当您更改表以添加列时,无需在alter 语句中提及column 关键字

  2. 添加默认约束无需使用SET关键字

  3. BIT 列的默认值可以是 ('TRUE' or '1') / ('FALSE' or 0)TRUEFALSE 需要被称为 string 而不是标识符

【讨论】:

  • 这里只是一个警告。 BIT 不是真正的布尔值。它允许 3 种状态,0、1 和 NULL。这很微妙,但理解起来非常重要。你也不能像布尔值一样对它进行编码。
【解决方案2】:

Pரதீப் 给出的答案创建了一个可为空的 bool,而不是 bool,这对你来说可能没问题。例如在 C# 中,它会创建:bool? AdminApprovednot bool AdminApproved

如果需要创建bool(默认为false):

    ALTER TABLE person
    ADD AdminApproved BIT
    DEFAULT 0 NOT NULL;

【讨论】:

    【解决方案3】:

    在 phpmyadmin 中,如果您需要将布尔数据类型列添加到默认值为 true 的现有表中:

    ALTER TABLE books
       isAvailable boolean default true;
    

    【讨论】:

      【解决方案4】:

      以下查询对我有用,默认值为 false;

      ALTER TABLE cti_contract_account ADD ready_to_audit BIT DEFAULT 0 NOT NULL;

      【讨论】:

      • 这并没有给这个线程增加任何新内容,实际上与三年前发布的答案完全相同,并且得到了大力支持。请不要重复现有的答案,它们只会在线程中添加噪音。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 2020-04-04
      • 1970-01-01
      • 2011-02-03
      • 2012-01-27
      • 1970-01-01
      • 2012-11-16
      相关资源
      最近更新 更多