Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle SQL автоматично създава VARCHAR инкрементиран PK

Това е добър случай за използване на IDENTITY иВИРТУАЛЕН колони. Така че няма нужда от допълнителна ПОСЛЕДОВАТЕЛНОСТ и ТРИГЕР .

Демо:

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

Резултат:

select * from sample;

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

Как работи:

  1. NUMBER GENERATED ALWAYS AS IDENTITY :Това автоматично създава необходимата последователност за вас, започва с 1 и се увеличава с 1 по подразбиране.
  2. GENERATED ALWAYS AS VIRTUAL :Това създава виртуална колона, чиито стойности се изчисляват автоматично, като се използват други стойности на колони. В тази демонстрация той използва колоната за самоличност.
  3. LPAD :Това ще гарантира, че нулите остават подплатени, докато стойността на колоната се увеличава, но също така ще гарантира, че когато числото се увеличава, то няма да увеличи дължината на низа.
  4. CONCAT :Това ще свърже TNT до горната стойност.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да предоставите достъп до v$ изгледи (v$session,v$instance)

  2. Търсят се NULL стойности за различен тип Oracle

  3. Oracle Поглед зад положителното

  4. В база данни на Oracle каква е разликата между ROWNUM и ROW_NUMBER?

  5. Хибернация на параметризирани sql заявки, бавни и активни сесии на oracle