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

Какво е последователност в oracle

Какво е последователността в oracle

  • Oracle Sequence е обект, създаден от потребител, който може да бъде споделен от множество потребители за генериране на уникални цели числа
  • Най-общата употреба на последователности би била генерирането на колона с първичен ключ в таблицата.
  • Последователността се генерира от вътрешна рутина на Oracle, така че не е нужно да се притесняваме за . Това ще спести tim3, тъй като разработчикът не трябва да генерира рутина за създаване на последователност
  • Генератор на последователни числа, може да бъде конфигуриран да увеличава или намалява
  • Съществува само в речника на данните, може да бъде ограничен или повторяем (цикъл).
  • Нуждаем се от привилегия за създаване на последователност, за да създадем последователността

Създаването на последователност се извършва с помощта на

СЪЗДАВАНЕ НА ПОСЛЕДОВАТЕЛНОСТ

[ЗАПОЧНЕТЕ С]

[НАРАЩАНЕ С]

[NO/MINVALUE]

[NO/MAXVALUE]

[НЕ/ЦИКЛ]

[НЕ/КЕШ];

Описание на всяка стойност

 

ЗАПОЧНЕТЕ С Той дефинира началната стойност на последователността (по подразбиране 1 ),
НАРАЩАНЕ С Той определя нивото на увеличаване или намаляване (по подразбиране 1 ),
MINVALUE Той дефинира най-ниската стойност за намаляваща последователност
MAXVALUE Той дефинира най-високата стойност за нарастваща последователност
ЦИКЛ Определя дали последователността ще се повтори
КЕШ Той дефинира блока от последователни номера, съхранявани в паметта (по подразбиране 20 ), NOCACHE принуждава речника на данните да се актуализира за всяко число, генерирано от последователността

Примери

 

създаване на последователност test_tech начало с 1
инкремент с 1
maxvalue 10000
цикъл
кеш 20;

създаване на последователност test_tech1

започнете с 1
нарастване с 1
maxvalue 4500000
cycle
nocache;

 

Как се използват последователности

За да използвате последователност, просто използвайте псевдоколона CURRVAL и NEXTVAL

Псевдо колона NEXTVAL 

Използва се за генериране на последователния номер на определената последователност

Псевдо колона CURRVAL

Той съдържа последователността, която потребителят току-що генерира

ИЗБЕРЕТЕ TEST_TECH.NEXTVAL ОТ DUAL;

ИЗБЕРЕТЕ TEST_TECH.CURRVAL ОТ DUAL;

ИЗБЕРЕТЕ TEST_TECH.NEXTVAL ОТ DUAL;

Как да модифицирате  последователностите

Можем да модифицираме последователностите, като използваме алтер последователност.

SQL> ПРОМЕНИ ПОСЛЕДОВАТЕЛНОСТ tech_test1 НАРАЩАНЕ С 50;

Промените засягат само бъдещото използване на последователността.

Трябва да сте собственик или да имате привилегия за промяна на тази последователност

Не можем да променим да започнем с опция. За тази последователност трябва да бъде премахната  и пресъздадена

Промените в последователността също са валидирани

Как да премахнете последователността

Изтриването на изглед се извършва с помощта на команда DROP последователност.

Изпускане на последователност test_tech ;

Речникови изгледи за преглед на данните за последователността

подробности за последователността могат да бъдат запитани от речника чрез запитване или USER_SEQUENCES, ALL_ SEQUENCES или DBA_ SEQUENCES. Има три категории  изгледи

USER_% Този изглед съдържа информация само за обектите, притежавани от потребителя

Пример

USER_TABLES,USER_TAB_COLS

ВСИЧКИ-% Този изглед съдържа информация за обектите, до които потребителят има достъп в базата данни.

Пример

ALL_TABLES,ALL_TAB_COLS

DBA_% Този изглед съдържа информация за всички обекти   в системата и това са ограничени изгледи, които са достъпни за потребителя, който има роля на DBA

Пример

DBA_TABLES,DBA_TAB_COLS

  DBA_% показвания за информация за последователности ALL_% показвания за информация за последователности USER_% показвания за информация за последователности
Преглед на последователности информация dba_sequences всички_ последователности последователности_потребител

За да изброите всички последователности, притежавани от текущата употреба

изберете  име_на_последователност от потребителски_последователности;

За да изброите всички последователности в база данни:

Изберете  собственик, име на последователност от dba_sequence;

За да изброите последователности, достъпни за текущия потребител:

изберете име_на последователност от всички_последователности

Как да определим цялата информация за последователността?

изберете име_на_последователност,минимална_стойност,макс.стойност,инкремент_по,последен_номер
ОТ DBA_SEQUENCES

където OWNER =‘
и последователност_NAME  =‘’;

Как да извлечем текущата стойност на последователност от оракул, без да я увеличавам

Колоната last_number показва следващия наличен пореден номер, ако не е посочен кеш

ИЗБЕРЕТЕ последен_номер

FROM user_sequences

WHERE име_на_последователност =‘<име_на_последователност>’;

Как да извлечете дефиницията на последователността (DDL изрази) от база данни на Oracle, без да се налага да преминавате през куп изгледи на речник

Синтаксис:

SQL> задайте дълъг 1000
SQL> задайте размер на страницата 0изберете DBMS_METADATA.GET_DDL(‘SEQUENCE’,’<име_на_последователност>’) от DUAL;

Как да  зададете стойността LASTVALUE в последователност на Oracle

ALTER SEQUENCE tech_seq_name НАРАЩАНЕ С 250;

SELECT tech_seq_name.nextval FROM dual;

ALTER SEQUENCE tech_seq_name  INCREMENT BY 1;

Как да нулирате последователност в Oracle

Има много начини.

а) Можем да пуснем и да пресъздадем последователността. Но това анулира всички зависими обекти (задействания/съхранени процедури и т.н.)

б) Можем да нулираме  с тези прости стъпки

Стъпка 1:Намерете най-новата стойност на последователността

Изберете tech_seq_name.nextval FROM dual;

Стъпка 2:променете последователността с увеличаване на отрицателната стойност на  най-новата стойност

ALTER SEQUENCE tech_seq_name INCREMENT BY -<последна стойност>  minvalue 0;

Стъпка 3  Направете nextval, за да го върнете на нула

SELECT tech_seq_name.nextval FROM dual;

Стъпка 4:Променете увеличението обратно на 1

ALTER SEQUENCE tech_seq_name  INCREMENT BY 1;

Пример

SELECT tech_seq_name.nextval FROM dual;

——————————————

250

ALTER SEQUENCE tech_seq_name НАРАЩАНЕ С -250;

SELECT tech_seq_name.nextval FROM dual;

ALTER SEQUENCE tech_seq_name  INCREMENT BY 1;

Можете да намерите повече на тази връзка

Как да нулирате последователността

Влияние от кеширането на последователностите

Последователностите се кешират с цел подобряване на производителността на извличане. В RAC всеки екземпляр съхранява стойностите на кеша

Може да имаме пропуски в последователността при използване на кеша поради следните причини

  1. Извършва се връщане назад
  2. Системен срив или срив на екземпляр
  3. Последователността се използва в друга таблица

Има нова функция в Oracle 12c за последователности

Последователности от сесии

С Oracle Database 12C са налични нови ключови думи SESSION, GLOBAL, които могат да бъдат посочени по време на създаване на последователност
СЪЗДАВАНЕ НА ПОСЛЕДОВАТЕЛНОСТ test_session_seq СТАРТИ С 1 НАРАЩАНЕ С 1 СЕСИЯ;
СЪЗДАВАНЕ НА ПОСЛЕДОВАТЕЛНОСТ test_global_seq НАЧАЛО С 1 I1NC REGLMENT BY 1 I1;

Глобално Сесия
създава стандартна последователност, добре позната в предишната версия. Това е по подразбиране. създава нов тип последователност от сесии, която е специален тип последователност, която е специално проектирана да се използва с глобални временни таблици, които имат видимост на сесията. Последователността на сесията връща уникален диапазон от последователни номера само в рамките на сесия, но не и между сесиите. Друга разлика е, че последователностите от сесии не са постоянни. Ако сесията изчезне, състоянието на последователностите от сесии, до които е бил достъпен по време на сесията.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да съкратите TABLE в Oracle

  2. ORA-00918:колона двусмислено дефинирана в SELECT *

  3. _gc_fusion_compression

  4. предайте целочислен масив на процедурата на Oracle от c#

  5. Научете за пакета DBMS_OUTPUT в Oracle