изменить таблицу, добавив столбец guid в Oracle - PullRequest
0 голосов
/ 03 июня 2019

Что такое оператор для изменения таблицы, которая содержит около 10 миллионов строк, добавив столбец guid, который будет содержать уникальный идентификатор для каждой строки (не являясь частью ПК)

Какой тип данных долженстолбец глобального уникального идентификатора будет?Есть ли процедура, которая его создает?Как он будет автоматически увеличиваться или генерироваться каждый раз при вставке новой записи?

Ответы [ 2 ]

2 голосов
/ 03 июня 2019

Разбейте его на отдельные этапы

Сначала нам нужен новый столбец:

alter table MyTable
add guid_column raw(32) default sys_guid();

Затем обновите существующие строки:

update MyTable
set guid_column = sys_guid();
1 голос
/ 03 июня 2019
  1. Используйте функцию идентификации столбцов в oracle 12c, чтобы добавить столбец в таблицу, который автоматически увеличивается при добавлении новых строк в таблицу.
  2. Идеальный способ справиться с этой задачей - это: a) СОЗДАТЬ «новую» таблицу со структурой, аналогичной исходной таблице, используя CREATE TABLE AS (оператор CTAS) с новым «столбцом идентификаторов» вместо добавления столбца идентификаторов, используя оператор ALTER в существующей таблице. б) CTAS работает быстрее по сравнению с запуском ALTER на существующей таблице. c) После подтверждения того, что «новая» таблица содержит все данные из исходной таблицы вместе со столбцом, содержащим уникальные значения, а также все индексы и ограничения, вы можете удалить исходную таблицу.

Еще один способ избежать создания ограничений - индексы, присутствующие в исходной таблице на новой таблице, - создать пустую таблицу со всеми ограничениями, индексами и столбцом идентификаторов. Позвольте администратору базы данных извлечь данные из исходной таблицы и импортировать их в «новую» таблицу.

Преимущества: Этот подход гарантирует, что ни один из объектов, зависящих от исходной таблицы, не станет НЕДЕЙСТВИТЕЛЬНЫМ, что, как правило, затрудняет некоторые функции приложений.

...