sql >> Databasteknik >  >> RDS >> Oracle

Oracle SQL skapar automatiskt VARCHAR inkrementerad PK

Detta är ett bra användningsfall för IDENTITY och VIRTUELL kolumner. Så, inget behov av en ytterligare SEKVENS och 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

Hur det fungerar:

  1. NUMBER GENERATED ALWAYS AS IDENTITY :Detta skapar automatiskt den önskade sekvensen åt dig, börjar med 1 och ökar med 1 som standard.
  2. GENERATED ALWAYS AS VIRTUAL :Detta skapar en virtuell kolumn vars värden beräknas automatiskt med andra kolumnvärden. I denna demo använder den identitetskolumnen.
  3. LPAD :Detta kommer att säkerställa att nollor lämnas utfyllda medan kolumnvärdet ökas, men kommer också att säkerställa att när numret ökas det inte ökar längden på strängen.
  4. CONCAT :Detta sammankopplar TNT till över värde.


  1. Query Performance Insight:Upptäck vad som förbrukar resurser i din Azure SQL-databas?

  2. Single SQL SELECT Returnerar flera rader från en tabellrad

  3. Använda pdo i php med lagrad procedur

  4. En guide för att distribuera TimescaleDB med Docker