sql >> Databáze >  >> RDS >> Oracle

Oracle SQL automaticky vytvoří inkrementovaný PK VARCHAR

Toto je dobrý případ použití pro IDENTITY a VIRTUÁLNÍ sloupců. Není tedy potřeba další SEKVENCE a 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);

Výsledek:

select * from sample;

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

Jak to funguje:

  1. NUMBER GENERATED ALWAYS AS IDENTITY :Tím se automaticky vytvoří požadovaná sekvence, která začíná 1 a ve výchozím nastavení se zvyšuje o 1.
  2. GENERATED ALWAYS AS VIRTUAL :Tím se vytvoří virtuální sloupec, jehož hodnoty se vypočítávají automaticky pomocí hodnot jiných sloupců. V této ukázce používá sloupec identity.
  3. LPAD :Tím zajistíte, že při zvýšení hodnoty sloupce zůstanou nuly, ale také to, že když se číslo zvýší, nezvětší se délka řetězce.
  4. CONCAT :Tím dojde ke spojení TNT na vyšší hodnotu.


  1. Pole vstupního formuláře HTML nevyplňuje hodnotu PHP za první mezerou

  2. Jaký je způsob návrhu jednoduché relační databáze učitel-předmět-žák-dávka?

  3. Předejte proměnné MySQL do skriptu z příkazového řádku

  4. Převeďte číslo na slova v indickém systému číslování