Oracle
 sql >> Database >  >> RDS >> Oracle

Come aggiungere una colonna di sequenza a una tabella esistente con record

Dovresti aggiungere una colonna

ALTER TABLE userlog
  ADD( user_id number );

crea una sequenza

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

Aggiorna i dati nella tabella

UPDATE userlog
   SET user_id = user_id_seq.nextval

Supponendo che tu voglia user_id per essere la chiave primaria, dovresti quindi aggiungere il vincolo della chiave primaria

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

Se vuoi usare la sequenza per aggiungere automaticamente user_id quando esegui un INSERT (l'altra opzione sarebbe quella di fare riferimento in modo specifico a user_id_seq.nextval nel tuo INSERT dichiarazioni, avresti anche bisogno di un trigger

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