Sequence oracle что это

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

SQL Server и Oracle поддерживают автоматическое создание столбцов автоприращения, которые могут использоваться в качестве первичных ключей. Эти значения формируются сервером по мере добавления строк в таблицу. В SQL Server задается свойство IDENTITY столбца, в Oracle создается последовательность. Разница между столбцами автоприращения в SQL Server и последовательностями в Oracle заключается в следующем.

В SQL Server столбец помечается как столбец автоприращения, и SQL Server автоматически формирует для него новые значения при вставке новой строки.

В Oracle создается последовательность новых значений для столбца таблицы, но отсутствует прямая связь между этой последовательностью и таблицей или столбцом. Последовательность Oracle является таким же объектом, как таблица или хранимая процедура.

При создании последовательности в базе данных Oracle можно определить ее начальное значение и приращение значений. Перед вставкой новых строк можно также запросить новые значения последовательности. Это означает, что код может получить ключевые значения для новых строк перед вставкой их в базу данных.

дополнительные сведения о создании столбцов с автоматическим приращением с помощью SQL Server и ADO.NET см. в разделе получение значений Identity или autoincrement и создание столбцов с автоувеличением.

Пример

В следующем примере на языке C# показано получение новых значений последовательности в базе данных Oracle. Пример ссылается на последовательность в запросе INSERT INTO, который используется для вставки новых строк, и возвращает значение последовательности, сформированное предложением RETURNING, впервые появившемся в Oracle10g. В примере добавляется набор новых строк в таблицу DataTable с помощью возможности автоприращения ADO.NET для формирования значений «местозаполнителей» первичного ключа. Обратите внимание, что значение приращения ADO.NET, сформированное для новых строк, представляет собой просто «местозаполнитель». Это означает, что база данных может сама сформировать эти значения вместо значений, созданных ADO.NET.

Перед вставкой ожидающих строк в базу данных пример отображает их содержимое на экране. Затем создается новый объект OracleDataAdapter, и его свойствам InsertCommand и UpdateBatchSize присваиваются значения. Пример применяет ту же логику, чтобы возвратить сформированные сервером значения с помощью выходных параметров. После этого пример выполняет вставку строк и отображает содержимое таблицы DataTable.

Источник

Create SEQUENCE

Последовательность SEQUENCE это объект базы данных, предназначенный для генерации целых чисел в соответствии с правилами, установленными при его создании. Генерируемые числа могут быть как положительные, так и отрицательные. Как правило, SEQUENCE используют для автоматической генерации значений первичных ключей. Последовательность является объектом базы данных, и генерируемое ею значения можно использовать для различных таблиц.

Синтаксис CREATE SEQUENCE

В общем виде синтаксис создания последовательности SEQUENCE для СУБД Oracle можно представить в следующем виде :

Несмотря на однозначное назначение SEQUENCE в различных СУБД имеются определенные различия, которые и будут рассмотрены в данной статье.

Тип генерируемого SEQUENCE значения

В MS SQL тип генерируемого значения можно определить при помощи оператора [ built_in_integer_type | user-defined_integer_type]. Если тип данных не указан, то по умолчанию используется тип bigint. Синтаксис выражения CREATE SEQUENCE для СУБД MS SQL :

SEQUENCE СУБД MS SQL может быть определена с определенным типом. Допускаются следующие типы :

Для SEQUENCE СУБД Apache Derby, аналогично MS SQL, может быть определен тип. Допускаются типы smallint, int, bigint. Синтаксис генератора последовательности SEQUENCE СУБД Apache Derby :

Атрибуты SEQUENCE

SCHEMA

SCHEMA определяет схему, в которой создается последовательность. Если SCHEMA опущена, то :

SEQUENCE_NAME

SEQUENCE_NAME определяет имя создаваемой последовательности.

START WITH

START WITH start_num — это первое значение, возвращаемое объектом последовательности. Значение должно быть не больше максимального и не меньше минимального значения объекта последовательности. По умолчанию начальным значением для нового объекта последовательности служит минимальное значение для объекта возрастающей последовательности и максимальное — для объекта убывающей.

INCREMENT BY

MAXVALUE maximum_num

MAXVALUE — максимальное значение maximum_num, создаваемое последовательностью. Если оно не указано, то применяется значение по умолчанию NOMAXVALUE.

MINVALUE minimum_num

MINVALUE — минимальное значение minimum_num, создаваемое последовательностью. Если оно не указано, то применяется значение по умолчанию NOMINVALUE.

NOMAXVALUE

NOMINVALUE

CYCLE

Применение в скрипте CYCLE позволяет последовательности повторно использовать созданные значения при достижении MAXVALUE или MINVALUE. Т.е. последовательность будет повторно гененировать значения с начальной позиции (со START’a). По умолчанию используется значение NOCYCLE. Указывать CYCLE вместе с NOMAXVALUE или NOMINVALUE нельзя.

NOCYCLE

NOCYCLE указывает, что последовательность не сможет генерировать значения после достижения максимума или минимума.

CACHE cache_num

Оператор CACHE в скрипте позволяет создавать заранее и поддерживать в памяти заданное количество значений последовательности для быстрого доступа.

В СУБД PostgreSQL минимальное значение равно 1 и соответствует значению NOCACHE.

В СУБД Oracle минимальное значение равно 2.

ORDER

Данный оператор используется только в СУБД Oracle. Он гарантирует, что номера последовательности генерируются в порядке запросов. Если упорядочение нежелательно или не установлено явным образом, Oracle применяет значение по умолчанию NOORDER, который не гарантирует, что номера последовательности генерируются в порядке запросов

Источник

Sequence oracle что это

When a sequence number is generated, the sequence is incremented, independent of the transaction committing or rolling back. If two users concurrently increment the same sequence, then the sequence numbers each user acquires may have gaps, because sequence numbers are being generated by the other user. One user can never acquire the sequence number generated by another user. After a sequence value is generated by one user, that user can continue to access that value regardless of whether the sequence is incremented by another user.

Sequence numbers are generated independently of tables, so the same sequence can be used for one or for multiple tables. It is possible that individual sequence numbers will appear to be skipped, because they were generated and used in a transaction that ultimately rolled back. Additionally, a single user may not realize that other users are drawing from the same sequence.

After a sequence is created, you can access its values in SQL statements with the CURRVAL pseudocolumn, which returns the current value of the sequence, or the NEXTVAL pseudocolumn, which increments the sequence and returns the new value.

Pseudocolumns for more information on using the CURRVAL and NEXTVAL

«How to Use Sequence Values» for information on using sequences

ALTER SEQUENCE or DROP SEQUENCE for information on modifying or dropping a sequence

To create a sequence in your own schema, you must have the CREATE SEQUENCE system privilege.

To create a sequence in another user’s schema, you must have the CREATE ANY SEQUENCE system privilege.

Источник

Sequence oracle что это

Purpose

Use the CREATE SEQUENCE statement to create a sequence, which is a database object from which multiple users may generate unique integers. You can use sequences to automatically generate primary key values.

When a sequence number is generated, the sequence is incremented, independent of the transaction committing or rolling back. If two users concurrently increment the same sequence, then the sequence numbers each user acquires may have gaps, because sequence numbers are being generated by the other user. One user can never acquire the sequence number generated by another user. Once a sequence value is generated by one user, that user can continue to access that value regardless of whether the sequence is incremented by another user.

Sequence numbers are generated independently of tables, so the same sequence can be used for one or for multiple tables. It is possible that individual sequence numbers will appear to be skipped, because they were generated and used in a transaction that ultimately rolled back. Additionally, a single user may not realize that other users are drawing from the same sequence.

Once a sequence is created, you can access its values in SQL statements with the CURRVAL pseudocolumn, which returns the current value of the sequence, or the NEXTVAL pseudocolumn, which increments the sequence and returns the new value.

See Also:

Chapter 3, » Pseudocolumns» for more information on using the CURRVAL and NEXTVAL

«How to Use Sequence Values » for information on using sequences

ALTER SEQUENCE or DROP SEQUENCE for information on modifying or dropping a sequence

Prerequisites

To create a sequence in your own schema, you must have the CREATE SEQUENCE system privilege.

To create a sequence in another user’s schema, you must have the CREATE ANY SEQUENCE system privilege.

Syntax

create_sequence::=
Sequence oracle что это. create sequence. Sequence oracle что это фото. Sequence oracle что это-create sequence. картинка Sequence oracle что это. картинка create sequence
Description of the illustration create_sequence.gif

Semantics

Specify the name of the sequence to be created.

INCREMENT BY

START WITH

Specify the first sequence number to be generated. Use this clause to start an ascending sequence at a value greater than its minimum or to start a descending sequence at a value less than its maximum. For ascending sequences, the default value is the minimum value of the sequence. For descending sequences, the default value is the maximum value of the sequence. This integer value can have 28 or fewer digits.

Note:

This value is not necessarily the value to which an ascending cycling sequence cycles after reaching its maximum or minimum value.

NOMAXVALUE

MINVALUE

NOMINVALUE

Specify CYCLE to indicate that the sequence continues to generate values after reaching either its maximum or minimum value. After an ascending sequence reaches its maximum value, it generates its minimum value. After a descending sequence reaches its minimum, it generates its maximum value.

NOCYCLE

Specify NOCYCLE to indicate that the sequence cannot generate more values after reaching its maximum or minimum value. This is the default.

Specify how many values of the sequence the database preallocates and keeps in memory for faster access. This integer value can have 28 or fewer digits. The minimum value for this parameter is 2. For sequences that cycle, this value must be less than the number of values in the cycle. You cannot cache more values than will fit in a given cycle of sequence numbers. Therefore, the maximum value allowed for CACHE must be less than the value determined by the following formula:

If a system failure occurs, all cached sequence values that have not been used in committed DML statements are lost. The potential number of lost values is equal to the value of the CACHE parameter.

Note:

Oracle recommends using the CACHE setting to enhance performance if you are using sequences in a Real Application Clusters environment.

Specify ORDER to guarantee that sequence numbers are generated in order of request. This clause is useful if you are using the sequence numbers as timestamps. Guaranteeing order is usually not important for sequences used to generate primary keys.

ORDER is necessary only to guarantee ordered generation if you are using Oracle Database with Real Application Clusters. If you are using exclusive mode, sequence numbers are always generated in order.

NOORDER

Specify NOORDER if you do not want to guarantee sequence numbers are generated in order of request. This is the default.

Example

Creating a Sequence: Example

Источник

Sequence oracle что это

When a sequence number is generated, the sequence is incremented, independent of the transaction committing or rolling back. If two users concurrently increment the same sequence, then the sequence numbers each user acquires may have gaps, because sequence numbers are being generated by the other user. One user can never acquire the sequence number generated by another user. After a sequence value is generated by one user, that user can continue to access that value regardless of whether the sequence is incremented by another user.

Sequence numbers are generated independently of tables, so the same sequence can be used for one or for multiple tables. It is possible that individual sequence numbers will appear to be skipped, because they were generated and used in a transaction that ultimately rolled back. Additionally, a single user may not realize that other users are drawing from the same sequence.

After a sequence is created, you can access its values in SQL statements with the CURRVAL pseudocolumn, which returns the current value of the sequence, or the NEXTVAL pseudocolumn, which increments the sequence and returns the new value.

Pseudocolumns for more information on using the CURRVAL and NEXTVAL

«How to Use Sequence Values» for information on using sequences

ALTER SEQUENCE or DROP SEQUENCE for information on modifying or dropping a sequence

To create a sequence in your own schema, you must have the CREATE SEQUENCE system privilege.

To create a sequence in another user’s schema, you must have the CREATE ANY SEQUENCE system privilege.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *