1
我想將NOT NULL
添加到列中,但它看起來像ADD CONSTRAINT
不支持它。我如何添加約束?我可以向CockroachDB列添加NOT NULL約束嗎?
我想將NOT NULL
添加到列中,但它看起來像ADD CONSTRAINT
不支持它。我如何添加約束?我可以向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
從現有列設置的值,然後重命名新列,並掉落舊的。