У меня есть очень простая таблица, а именно:
CREATE TABLE test(
id INT PRIMARY KEY DEFAULT unique_rowid()
)
И я хочу изменить тип id
на байты, чтобы я мог SET DEFAULT uuid_v4();
.
Однако, если я запускаю этот sql:
ALTER TABLE test MODIFY id bytes;
Я получаю сообщение об ошибке:
pq: cannot convert INT8 to BYTES
Есть ли возможность изменить столбец таблицы из одного типа в другой в cockroachdb?
Оказалось, что таракан не позволяет изменить ограничение первичного ключа, поэтому я просто создал новую таблицу с соответствующим типом PK, использовал оператор INSERT INTO SELECT
, удалил старую таблицу, а затем переименовал новую.
У них есть это в официальной документации:
A table's primary key can only be specified in the CREATE TABLE statement. It cannot be changed later using ALTER TABLE, though it is possible to go through a process to create a new table with the new primary key you want and then migrate the data.