Как добавить столбец последовательности в существующую таблицу с записями
Я создал новую таблицу с именем 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;