Oracle SQL - добавьте первичный ключ в таблицу

У меня есть несколько столбцов без первичного ключа, а - добавить столбец первичного ключа.

NAME    Age
-------------
Peter   45
Bob     25
John    56
Peter   45

Некоторые коллеги предлагают добавить PK с последовательностями и триггерами: Добавить первичный ключ автоматического увеличения в существующую таблицу в оракуле

Это хорошо, но мои клиенты используют пользователя базы данных без прав на добавление последовательностей или триггеров. Я хочу предотвратить контакты с десятками администраторов DBA, чтобы изменить права пользователя или запустить мои скрипты.

Это мое предложение добавить PK только с инструкцией по обновлению: (Мне нужна помощь на шаге 2)

Шаг 1: Создайте столбец идентификатора (у меня есть права БД для этого)

ALTER TABLE PERSON ADD ID NUMBER(10,0);

Шаг 2: Вопрос: Можно ли инициализировать столбец идентификатора с уникальными значениями в зависимости от порядка строк или чего-то еще? Как?

UPDATE PERSON SET ID = something-unique

Шаг 3: добавьте префикс первичного ключа: (у меня есть права для этого)

ALTER TABLE PERSON ADD CONSTRAINT PK_ID PRIMARY KEY(ID);

Шаг 4: Послесловия: первичный ключ управляется и добавляется моим приложением.

Это будет результат:

ID(PK)  NAME    Age
---------------------
1       Peter   45
2       Bob     25
3       John    56
4       Peter   45

Спасибо, ребята!

Ответ 1

Update person set id = rownum;

Ответ 2

Эта идея очень ребяческая, но должна работать нормально, если ваша таблица не имеет большого количества строк.

Для шага 2 запустите цикл for, например:

declare
    i pls_integer :=1;
     begin
    for rec in (select name,age, rowid from table_name)
    loop
    update table_name set id = i 
    where 
     table_name.name=rec.name 
     and table_name.age=rec.age 
     and table_name.rowid = rec.rowid;
    i:=i+1;
    end loop;
end;