1

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

4

1 回答 1

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具有相同数量的相同类型的列,并且在其版本中没有任何NULLcol_a

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

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

于 2017-04-11T21:33:46.740 回答