Как ВСТАВИТЬ в таблицу Postgres с автоматически сгенерированным идентификатором

Пытаюсь добавить в таблицу дубликаты текущих строк с некоторыми изменениями.

У меня есть таблица, например, с 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 не будет уникальным.

Как я могу это сделать?

insert into mytable(col1, col2) select col1, 'other_value' from mytable
Andreas 14.11.2018 17:34

@Andreas «Идентификатор столбца моей таблицы не увеличивается автоматически» эта вставка неверна, я получу «ОШИБКА: нулевое значение в столбце« id »нарушает ограничение NOT NULL»

Betsko Roman 14.11.2018 17:36
MyEntity original = em.find(MyEntity.class, id); em.persist(new MyEntity(original.getCol1(), "other value");
JB Nizet 14.11.2018 17:38

@JBNizet, я пытаюсь сделать это с помощью скрипта миграции пролетного пути

Betsko Roman 14.11.2018 17:39

Затем напишите свою миграцию на Java, чтобы сгенерировать UUID, или жестко закодируйте предварительно вычисленный UUID в своем сценарии миграции.

JB Nizet 14.11.2018 17:42

@RomanB В заголовке говорится: "Как ВСТАВИТЬ в таблицу Postgres автоматически сгенерированный идентификатор с участием" Ваш вопрос противоречит сам себе.

Andreas 14.11.2018 19:32
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
312
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для этого я устанавливаю 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;

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