Пытаюсь добавить в таблицу дубликаты текущих строк с некоторыми изменениями.
У меня есть таблица, например, с 3 столбцами (id, col1, col2), и 2 строки (492d0a75, some_text1, some_text2).
Идентификатор столбца моей таблицы не увеличивается автоматически, и я использую:
@Id
@GeneratedValue(generator = "uuid_gen")
@GenericGenerator(name = "uuid_gen", strategy = "uuid2")
@Column(name = "id", length = 36)
аннотации спящего режима для генерации уникального идентификатора.
Я хочу сделать что-то вроде этого:
insert into mytable(id, col1, col2)
select id, col1, 'other_value'
from mytable;
Но не могу, потому что id не будет уникальным.
Как я могу это сделать?
@Andreas «Идентификатор столбца моей таблицы не увеличивается автоматически» эта вставка неверна, я получу «ОШИБКА: нулевое значение в столбце« id »нарушает ограничение NOT NULL»
MyEntity original = em.find(MyEntity.class, id); em.persist(new MyEntity(original.getCol1(), "other value");@JBNizet, я пытаюсь сделать это с помощью скрипта миграции пролетного пути
Затем напишите свою миграцию на Java, чтобы сгенерировать UUID, или жестко закодируйте предварительно вычисленный UUID в своем сценарии миграции.
@RomanB В заголовке говорится: "Как ВСТАВИТЬ в таблицу Postgres автоматически сгенерированный идентификатор с участием" Ваш вопрос противоречит сам себе.




Для этого я устанавливаю uuid-ossp
Чтобы установить модуль uuid-ossp, вы используете оператор CREATE EXTENSION следующим образом:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
После этого теперь я могу использовать uuid_generate_v4 () из документы postgres
И мой последний запрос выглядит так:
insert into mytable (id, col1, col2)
select uuid_generate_v4(), col1, 'other_value'
from mytable;
insert into mytable(col1, col2) select col1, 'other_value' from mytable