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

Oracle SQL crea automaticamente PK incrementato VARCHAR

Questo è un buon caso d'uso per IDENTITY e VIRTUALE colonne. Quindi, non c'è bisogno di un'ulteriore SEQUENZA e 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);

Risultato:

select * from sample;

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

Come funziona:

  1. NUMBER GENERATED ALWAYS AS IDENTITY :Questo crea automaticamente la sequenza richiesta per te, inizia con 1 e aumenta di 1 per impostazione predefinita.
  2. GENERATED ALWAYS AS VIRTUAL :Questo crea una colonna virtuale i cui valori vengono calcolati automaticamente utilizzando altri valori di colonna. In questa demo utilizza la colonna Identity.
  3. LPAD :Ciò assicurerà che gli zeri vengano lasciati riempiti mentre il valore della colonna viene incrementato, ma assicurerà anche che quando il numero viene incrementato non aumenta la lunghezza della stringa.
  4. CONCAT :Questo concatenerà TNT al di sopra del valore.