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

Как да създадете последователност на Oracle, започваща с максимална стойност от таблица?

Ако можете да използвате PL/SQL, опитайте (РЕДАКТИРАНЕ:Включва предложението на Нийл xlnt, за да започнете със следващата по-висока стойност):

SELECT 'CREATE SEQUENCE transaction_sequence MINVALUE 0 START WITH '||MAX(trans_seq_no)+1||' INCREMENT BY 1 CACHE 20'
  INTO v_sql
  FROM transaction_log;

EXECUTE IMMEDIATE v_sql;

Друг момент, който трябва да имате предвид:като зададете параметъра CACHE на 20, рискувате да загубите до 19 стойности във вашата последователност, ако базата данни изпадне. Кешираните стойности се губят при рестартиране на базата данни. Освен ако не удряте последователността много често или не ви пука толкова много за пропуските, бих я настроил на 1.

Една последна грешка:стойностите, които сте посочили за CACHE и INCREMENT BY, са по подразбиране. Можете да ги оставите изключени и да получите същия резултат.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. (+) =оператор в oracle sql в клауза where

  2. Синтаксис на Oracle SQL:Идентификатор в цитати

  3. Завъртане на таблица в SQL (т.е. кръстосана табулация / кръстосана таблица)

  4. Заявка за изчисляване както на кумулативната, така и на общата SUM над заплатата

  5. ORA-01017 Съвети за разрешаване на грешки на Oracle