Могу ли я добавить ограничение NOT NULL в столбец CockroachDB?
Я хочу добавить NOT NULL
в столбец, но это выглядит как ADD CONSTRAINT
не поддерживает это. Как я могу добавить ограничение?
1 ответ
Таракан в настоящее время не позволяет добавлять эти ограничения в существующую таблицу.
Одним из обходных путей является создание новой таблицы со схемой, которую вы хотите использовать (включая 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
ограничение (что подразумевает, что это также потребует DEFAULT
), затем используйте UPDATE
чтобы установить его значение из существующего столбца, затем переименуйте новый столбец и отбросьте старый.