Как добавить столбец последовательности в существующую таблицу с записями

Я создал новую таблицу с именем USERLOG с двумя полями из предыдущего VIEW. В таблице уже содержится около 9000 записей. Два поля, взятые из VIEW, то есть weblog_views, состоят из IP (состоит из IP-адреса) и WEB_LINK (состоит из URL-адреса). Это код, который я использовал,

    CREATE TABLE USERLOG
    AS
    SELECT C_IP, WEB_LINK FROM weblog_views;

Я хочу добавить еще один столбец в эту таблицу с именем USER_ID, который будет состоять из последовательности, начинающейся с 1 до 9000 записей, для создания уникального идентификатора для всех существующих строк. Мне нужна помощь в этой части. Я использую Oracle SQL Developer: ODMiner версии 3.0.04. Я попытался использовать опцию AUTO-INCREMENT,

    ALTER TABLE USERLOG
    ADD USER_ID INT UNSIGNED NOT NULL AUTO_INCREMENT;

Но я получаю сообщение об ошибке,

    Error report:
    SQL Error: ORA-01735: invalid ALTER TABLE option
    01735. 00000 -  "invalid ALTER TABLE option"

Итак, я бы очень признателен за любую помощь, которую я могу получить!

Ответы

Ответ 1

Вам нужно будет добавить столбец

ALTER TABLE userlog
  ADD( user_id number );

создать последовательность

CREATE SEQUENCE user_id_seq
  START WITH 1
  INCREMENT BY 1
  CACHE 20;

Обновить данные в таблице

UPDATE userlog
   SET user_id = user_id_seq.nextval

Предполагая, что вы хотите, чтобы user_id был основным ключом, вы должны добавить ограничение первичного ключа

ALTER TABLE userlog
  ADD CONSTRAINT pk_user_id PRIMARY KEY( user_id );

Если вы хотите использовать эту последовательность для автоматического добавления user_id, когда вы выполняете INSERT (другим вариантом будет ссылка на user_id_seq.nextval в ваших операторах INSERT, вам также понадобится триггер

CREATE OR REPLACE TRIGGER trg_userlog_user_id
  BEFORE INSERT ON userlog
  FOR EACH ROW
BEGIN
  :new.user_id := user_id_seq.nextval;
END;