我想将NOT NULL
添加到列中,但看起来ADD CONSTRAINT
不支持它。如何添加约束?
答案 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
设置其值现有列,然后重命名新列并删除旧列。