SQLсервер в Linux -самостоятельное освоение пакета

       

Таблица shipments



Таблица 7.2. Таблица shipments



Поле

Тип

Модификатор

Id

Integer

NOT NULL DEFAULT nextval ( 'shipments^ship id seq1)

customerjd

Integer

isbn

text

 

ship_date

timestamp with time zone

 

Команда создания таблицы shipments с автоматически увеличивающимся значением по умолчанию и ограничением первичного ключа выглядит так:

CREATE TABLE shipments

(id integer DEFAULT nextval ('shipments_shipjd_seq')

PRIMARY KEY. customerjd integer, isbn text. ship_date timestamp)

В качестве значения по умолчанию для поля id назначается результат вызова nextval () для последовательности shi pments_shi p_i d_seq. Таким образом, при вставке записей без указания поля id значение автоматически генерируется по результату вызова функции.

ВНИМАНИЕ

Простая установка ограничения DEFAULT не гарантирует его применения. Пользователь способен вручную задать любое значение, что может привести к потенциальному нарушению уникальности в будущем. Для предотвращения конфликтов можно воспользоваться триггером. За дополнительной информацией обращайтесь к подразделу «Триггеры» этого раздела.

После вызова функции nextval О для последовательности в некотором сеансе (то есть подключении к PostgreSQL) функция currval () возвращает значение, полученное при предыдущем вызове nextval () в активном сеансе.

Примечание 2
Примечание 2

Текущее значение последовательностей ассоциируется с определенным сеансом, чтобы одновременные обращения со стороны нескольких пользователей не приводило к ошибкам. Два пользователя могут работать с одной последовательностью в разных сеансах, но при этом функция currval () возвращает последнее текущее значение последовательности для того сеанса, в котором она была вызвана.

В листинге 7.31 в таблицу shi pments вставляется новая запись, в которой не указано значение поля id. В этой ситуации используется значение по умолчанию, которое (см. табл. 7.2) определяется результатом приращения последовательности

shipments_ship_id_seq функцией nextvaK).

Затем функция currva() используется для выборки только что вставленной записи.



Содержание раздела