sql >> Base de Datos >  >> RDS >> Oracle

Cómo agregar una columna de secuencia a una tabla existente con registros

Necesitarías agregar una columna

ALTER TABLE userlog
  ADD( user_id number );

crear una secuencia

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

Actualice los datos en la tabla

UPDATE userlog
   SET user_id = user_id_seq.nextval

Suponiendo que desea user_id para ser la clave principal, entonces agregaría la restricción de clave principal

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

Si desea utilizar la secuencia para agregar automáticamente el user_id cuando haces un INSERT (la otra opción sería hacer referencia específica a user_id_seq.nextval en tu INSERT declaraciones, también necesitaría un disparador

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