我可以向CockroachDB列添加NOT NULL约束吗?
答
蟑螂当前不允许将这些约束添加到现有表。
一种解决方法是创建要使用(包括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
从现有列设置的值,然后重命名新列,并掉落旧的。