Могу ли я добавить ограничение 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 чтобы установить его значение из существующего столбца, затем переименуйте новый столбец и отбросьте старый.

Другие вопросы по тегам