Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak dodać kolumnę sekwencji do istniejącej tabeli z rekordami?

Musisz dodać kolumnę

ALTER TABLE userlog
  ADD( user_id number );

utwórz sekwencję

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

Zaktualizuj dane w tabeli

UPDATE userlog
   SET user_id = user_id_seq.nextval

Zakładając, że chcesz user_id aby być kluczem podstawowym, należy dodać ograniczenie klucza głównego

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

Jeśli chcesz użyć sekwencji, aby automatycznie dodać user_id kiedy wykonasz INSERT (inną opcją byłoby odwołanie się do user_id_seq.nextval w swoim INSERT oświadczenia, potrzebujesz również wyzwalacza

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. wyzwalacz, jeśli jeszcze

  2. Jak dynamicznie wyświetlić typ zmiennej w PL/SQL?

  3. Uruchamianie skryptów Oracle SQL za pomocą podręcznika Ansible

  4. Migracja Java 11 - createConnectionBuilder() z PoolDataSourceImpl koliduje z createConnectionBuilder() z javax.sql.DataSource

  5. Używanie LogMiner do znajdowania bieżących zmian