sql >> Database >  >> RDS >> Oracle

Een sequentiekolom toevoegen aan een bestaande tabel met records

U zou een kolom moeten toevoegen

ALTER TABLE userlog
  ADD( user_id number );

maak een reeks

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

Werk de gegevens in de tabel bij

UPDATE userlog
   SET user_id = user_id_seq.nextval

Ervan uitgaande dat u user_id . wilt om de primaire sleutel te zijn, voegt u dan de primaire sleutelbeperking toe

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

Als u de reeks wilt gebruiken om automatisch de user_id . toe te voegen wanneer u een INSERT . doet (de andere optie zou zijn om specifiek te verwijzen naar user_id_seq.nextval in uw INSERT verklaringen, hebt u ook een trigger nodig

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. mysql group by om de min-waarde te retourneren en de bijbehorende rijgegevens te krijgen

  2. Kies uit een tabel met behulp van een verwijzing uit een gekoppelde tabel (Join binnen een Join?)

  3. Waarschuwing:join() [function.join]:ongeldige argumenten doorgegeven in C

  4. Hoe sql-mode=NO_ENGINE_SUBSTITUTION permanent te maken in MySQL my.cnf