【发布时间】:2017-09-07 11:14:44
【问题描述】:
我想在列中添加NOT NULL,但看起来ADD CONSTRAINT 不支持。如何添加约束?
【问题讨论】:
标签: cockroachdb
我想在列中添加NOT NULL,但看起来ADD CONSTRAINT 不支持。如何添加约束?
【问题讨论】:
标签: cockroachdb
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 从现有列中设置其值,然后重命名新列并删除旧列。
【讨论】: