русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Обеспечение уникальности первичного ключа


Дата добавления: 2015-07-09; просмотров: 477; Нарушение авторских прав


В некоторых СУБД как Oracle и PostgreSQL для обеспечения уникальности первичного ключа можно воспользоваться объектом последовательность, генерирующий последовательность целых чисел. По умолчанию 1027 максимальное значение для восходящей последовательности в Oracle и 1063 в PostgreSQL. Так что одной последовательности вполне хватит на несколько таблиц. В Oracle последовательность имеет два псевдостолбца:

· CURRVAL - текущее значение последовательности;

· NEXTVAL - увеличивает текущее значение на 1, а затем возвращает его.

В PostgreSQL для этой цели используются одноименные функции. Кроме этого есть функция setval, позволяющая задать текущее значение последовательности. Это можно использовать, например, при нумерации записей в выборке.

-- создаем последовательность-- с параметрами по умолчаниюCREATE SEQUENCE seq; -- создаем тестовую таблицуcreate table tblseq(id integer not null,num double precision, constraint pk_tblseq primary key (id)); -- вставляем данных для Oracleinsert into tblseq values(seq.nextval,3.14);insert into tblseq values(seq.nextval,6.14);insert into tblseq values(seq.nextval,7.14);commit; -- вставляем данные для PostgreSQLinsert into tblseq values(nextval('seq'),3.14);insert into tblseq values(nextval('seq'),6.14);insert into tblseq values(nextval('seq'),7.14);commit; -- проверяем select * from tblseq; -- уничтожение последовательностиDROP SEQUENCE seq;

Чтобы сделать присваивание значения первичного ключа автоматическим, в PostgreSQL надо подкорректировать значение столбца по умолчанию в определении таблицы, а для Oracle написать тригер.

-- для PostgreSQLcreate table tblseq(id integer not null DEFAULT nextval('seq'),num double precision, constraint pk_tblseq primary key (id)); -- для Oracle, создаем тригер tblseq_autoidcreate or replace trigger tblseq_autoid before insert on tblseq for each rowdeclarebegin select seq.nextval into :new.id from dual;end tblseq_autoid; -- теперь значение id будет устанавливаться-- автоматически следующим значением -- последовательности seqinsert into tblseq(num) values(3.14);insert into tblseq(num) values(6.14);insert into tblseq(num) values(7.14);commit;


<== предыдущая лекция | следующая лекция ==>
Нумерация записей | Столбцы с автоинкрементом


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.165 сек.