【问题标题】:Can I add a NOT NULL constraint to a CockroachDB column?我可以向 CockroachDB 列添加 NOT NULL 约束吗?
【发布时间】:2017-09-07 11:14:44
【问题描述】:

我想在列中添加NOT NULL,但看起来ADD CONSTRAINT 不支持。如何添加约束?

【问题讨论】:

    标签: cockroachdb


    【解决方案1】:

    Cockroach 目前不允许将这些约束添加到现有表中。

    一种解决方法是使用您要使用的架构(包括NOT NULL 约束)创建一个新表,然后使用INSERT...SELECT 将数据迁移到新表。

    这是一个例子:

    CREATE TABLE tbl2 (id INT PRIMARY KEY, col_a INT NOT NULL);
    INSERT INTO tbl2 SELECT * FROM tbl1;
    

    这假定 tbl1 具有相同数量的相同类型的列,并且在其版本的 col_a 中没有任何 NULL 值。

    这样做的缺点是它必须复制所有表数据,因此在大表上并不理想。

    另一种解决方法是添加一个带有NOT NULL 约束的新列(这意味着它还需要DEFAULT),然后使用UPDATE 从现有列中设置其值,然后重命名新列并删除旧列。

    【讨论】:

      猜你喜欢
      • 2017-07-06
      • 2023-02-03
      • 2014-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      • 2014-11-15
      • 2021-04-21
      相关资源
      最近更新 更多