Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment ajouter une colonne de séquence à une table existante avec des enregistrements

Vous auriez besoin d'ajouter une colonne

ALTER TABLE userlog
  ADD( user_id number );

créer une séquence

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

Mettre à jour les données du tableau

UPDATE userlog
   SET user_id = user_id_seq.nextval

En supposant que vous vouliez user_id pour être la clé primaire, vous ajouteriez alors la contrainte de clé primaire

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

Si vous souhaitez utiliser la séquence pour ajouter automatiquement le user_id quand vous faites un INSERT (l'autre option serait de référencer spécifiquement user_id_seq.nextval dans votre INSERT instructions, vous auriez également besoin d'un déclencheur

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