我想添加NOT NULL
到一列,但它看起来ADD CONSTRAINT
不支持它。如何添加约束?
问问题
245 次
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
具有相同数量的相同类型的列,并且在其版本中没有任何NULL值col_a
。
这样做的缺点是它必须复制所有表数据,因此在大表上并不理想。
另一种解决方法是添加一个带有NOT NULL
约束的新列(这意味着它还需要 a DEFAULT
),然后使用 anUPDATE
从现有列设置其值,然后重命名新列并删除旧列。
于 2017-04-11T21:33:46.740 回答