Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle SQL crée automatiquement VARCHAR incrémenté PK

C'est un bon cas d'utilisation pour IDENTITY et VIRTUELLE Colonnes. Donc, pas besoin d'une SÉQUENCE supplémentaire et TRIGGER .

Démo :

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);

Résultat :

select * from sample;

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

Comment ça marche :

  1. NUMBER GENERATED ALWAYS AS IDENTITY  :Cela crée automatiquement la séquence requise pour vous, commence par 1 et incrémente de 1 par défaut.
  2. GENERATED ALWAYS AS VIRTUAL :cela crée une colonne virtuelle dont les valeurs sont calculées automatiquement à l'aide d'autres valeurs de colonne. Dans cette démo, il utilise la colonne d'identité.
  3. LPAD  :Cela garantira que les zéros restent remplis pendant que la valeur de la colonne est incrémentée, mais garantira également que lorsque le nombre est incrémenté, il n'augmente pas la longueur de la chaîne.
  4. CONCAT  :Cela concaténera TNT à la valeur ci-dessus.