sql >> Database teknologi >  >> RDS >> Oracle

Oracle SQL opretter automatisk VARCHAR inkrementeret PK

Dette er et godt eksempel på IDENTITY og VIRTUEL kolonner. Så der er ikke behov for en ekstra SEKVENS og TRIGGER .

Demo:

CREATE TABLE sample (
    serial_no NUMBER GENERATED ALWAYS AS IDENTITY,
    tnt_id GENERATED ALWAYS AS (CONCAT('TNT', LPAD(serial_no, 5, '0'))) VIRTUAL,
    wtv    NUMBER(3)
);

insert into sample (wtv) values(100);
insert into sample (wtv) values(200);
insert into sample (wtv) values(300);

Resultat:

select * from sample;

 SERIAL_NO TNT_ID                         WTV
---------- ----------------------- ----------
         1 TNT00001                       100
         2 TNT00002                       200
         3 TNT00003                       300

Sådan fungerer det:

  1. NUMBER GENERATED ALWAYS AS IDENTITY :Dette opretter automatisk den nødvendige sekvens for dig, starter med 1 og stiger med 1 som standard.
  2. GENERATED ALWAYS AS VIRTUAL :Dette opretter en virtuel kolonne, hvis værdier beregnes automatisk ved hjælp af andre kolonneværdier. I denne demo bruger den identitetskolonnen.
  3. LPAD :Dette vil sikre, at nuller efterlades polstret, mens kolonneværdien øges, men vil også sikre, at når tallet øges, øges det ikke længden af ​​strengen.
  4. CONCAT :Dette vil sammenkæde TNT til over værdi.


  1. Tildeling af den samme parameterværdi flere gange i pdo execute

  2. php-funktion til mysql enum valgt

  3. Python 3.2-script til at oprette forbindelse til lokal MySQL-database

  4. MySQL-forespørgsel - optimeret