我可以在CockroachDB列中添加NOT NULL约束吗?

时间:2017-04-11 21:33:47

标签: cockroachdb

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

1 个答案:

答案 0 :(得分:2)

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设置其值现有列,然后重命名新列并删除旧列。