sql >> Base de Datos >  >> RDS >> Oracle

Oracle SQL crea automáticamente VARCHAR incrementado PK

Este es un buen caso de uso para IDENTIDAD y VIRTUAL columnas Por lo tanto, no se necesita una SECUENCIA adicional y DISPARADOR .

Demostración:

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

Resultado:

select * from sample;

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

Cómo funciona:

  1. NUMBER GENERATED ALWAYS AS IDENTITY :Esto crea automáticamente la secuencia requerida para usted, comienza con 1 y se incrementa en 1 de manera predeterminada.
  2. GENERATED ALWAYS AS VIRTUAL :Esto crea una columna virtual cuyos valores se calculan automáticamente utilizando otros valores de columna. En esta demostración, utiliza la columna de identidad.
  3. LPAD :Esto garantizará que los ceros se dejen rellenos mientras se incrementa el valor de la columna, pero también garantizará que cuando se incremente el número no aumente la longitud de la cadena.
  4. CONCAT :Esto conectará TNT al valor anterior.