Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como adicionar uma coluna de sequência a uma tabela existente com registros


Você precisaria adicionar uma coluna
ALTER TABLE userlog
  ADD( user_id number );

crie uma sequência
CREATE SEQUENCE user_id_seq
  START WITH 1
  INCREMENT BY 1
  CACHE 20;

Atualizar os dados na tabela
UPDATE userlog
   SET user_id = user_id_seq.nextval

Supondo que você queira user_id para ser a chave primária, você adicionaria a restrição de chave primária
ALTER TABLE userlog
  ADD CONSTRAINT pk_user_id PRIMARY KEY( user_id );

Se você quiser usar a sequência para adicionar automaticamente o user_id quando você faz um INSERT (a outra opção seria referenciar especificamente user_id_seq.nextval em seu INSERT instruções, você também precisaria de um gatilho
CREATE OR REPLACE TRIGGER trg_userlog_user_id
  BEFORE INSERT ON userlog
  FOR EACH ROW
BEGIN
  :new.user_id := user_id_seq.nextval;
END;