Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle SQL automatycznie tworzy PK z przyrostem VARCHAR

To dobry przypadek użycia IDENTITY i WIRTUALNE kolumny. Nie ma więc potrzeby dodatkowej SEKWENCJI i WYZWALANIE .

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

Wynik:

select * from sample;

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

Jak to działa:

  1. NUMBER GENERATED ALWAYS AS IDENTITY :To automatycznie tworzy wymaganą sekwencję, zaczyna się od 1 i domyślnie zwiększa się o 1.
  2. GENERATED ALWAYS AS VIRTUAL :Tworzy wirtualną kolumnę, której wartości są obliczane automatycznie przy użyciu innych wartości kolumn. W tym demo używa kolumny tożsamości.
  3. LPAD :Zapewni to dopełnienie zer podczas zwiększania wartości kolumny, ale także zapewni, że zwiększenie liczby nie zwiększy długości ciągu.
  4. CONCAT :To połączy TNT powyżej wartości.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wartości oddzielone przecinkami do funkcji IN w Oracle

  2. Usługa danych Oracle REST apex_pu

  3. Tabela zapytań z innej bazy danych ORACLE

  4. Jak zwrócić listę wartości zamiast ciągu podczas wykonywania zapytań do bazy danych Oracle przy użyciu XPath?

  5. MySQL „utwórz schemat” i „utwórz bazę danych” — czy jest jakaś różnica?