Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So fügen Sie einer vorhandenen Tabelle mit Datensätzen eine Sequenzspalte hinzu

Sie müssten eine Spalte hinzufügen

ALTER TABLE userlog
  ADD( user_id number );

Erstellen Sie eine Sequenz

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

Aktualisieren Sie die Daten in der Tabelle

UPDATE userlog
   SET user_id = user_id_seq.nextval

Angenommen, Sie möchten user_id um der Primärschlüssel zu sein, würden Sie dann die Primärschlüsseleinschränkung

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

Wenn Sie die Sequenz verwenden möchten, um die user_id automatisch hinzuzufügen wenn Sie ein INSERT ausführen (Die andere Möglichkeit wäre, speziell auf user_id_seq.nextval zu verweisen in Ihrem INSERT -Anweisungen benötigen Sie auch einen 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;