7600

Послідовності SQL

Лекция

Информатика, кибернетика и программирование

Послідовності PostgreSQL є обєктно-реляційною СУБД, що дозволило включити в неї ряд нестандартних розширень SQL. Частинацих розширень пов’язана з автоматизацією часто вживаних операцій з базами даних, це, зокрема, послі...

Украинкский

2013-01-26

78 KB

2 чел.

PAGE  2

Послідовності

PostgreSQL є об’єктно-реляційною СУБД, що дозволило включити в неї ряд нестандартних розширень SQL. Частина цих розширень повязана з автоматизацією часто вживаних операцій з базами даних, це, зокрема, послідовності і тригери.

       Послідовність (sequence) являє собою послідовність чисел. Значення послідовності мають тип integer, тому її значення повинні лежати в межах від 2 147 483 647 до -2 147 483 647. Як правило, її використовують у обмеженні DEFAULT для надання унікальних значень полям таблиць. Ці значення автоматично змінюються шляхом виклику функції nextval(). У інших СУБД, наприклад MS Access, послідовності називають лічильниками.

        Послідовність створюється командою:

CREATE SEQUENCE послідовність 

[ INCREMENT приріст] [ MINVALUE мінімум ] [ MAXVALUE максимум ] [ START початок ]

[ CACHE кеш ] [ CYCLE ]

        Тут:

  •  послідовність – ім’я послідовності, це єдиний обов’язковий параметр;
  •  INCREMENT приріст  нарощення поточного значення послідовності, це число може бути від’ємним або додатнім. За замовчуванням приріст дорівнює 1.
  •  MINVALUE мінімумум – мінімально допустиме значення. Спроба зменшити поточне значення нижче за заданий мінімум спричинить помилку або циклічний перехід до максимального значення (якщо послідовність створювалася з ключовим словом CYCLE). За замовчуванням мінімальне значення дорівнює 1;
  •  MAXVALUE максимум – максимально допустиме значення послідовності. Спроба перевищити заданий максимум спричинить помилку або циклічний перехід до мінімального значення (при CYCLE). За замовчуванням максимальне значення дорівнює 2 147 483 647;
  •  START початок – початкове значення послідовності, це будь-яке ціле число в інтервалі між мінімальним і максимальним значеннями. За замовчуванням послідовність починається з нижнього порога при зростанні послідовності або з верхнього – при убуванні;
  •  CACHE кешзабезпечує можливість попереднього обчислення і зберігання значень послідовності в оперативній пам’яті. Кешування прискорює доступ до тих послідовностей, які часто використовуються;
  •  CYCLEповторне, циклічне використання послідовності. Досягши нижнього або верхнього порога, послідовність продовжує генерувати нові значення, тоді вона переходить до мінімального значення при зростанні послідовності або до максимального – при убуванні. Зауважимо, що, оскільки в цих випадках значення послідовності повторюються, то вони не будуть унікальними.

        У нижченаведеному прикладі створюється послідовність з ім’ям ship, яка починається із значення 0 і збільшується на 1 до тих пір, поки не досягне максимального значення. Ключове слово CYCLE не вказане, тому ця послідовність набуває лише унікальних значень.

CREATE SEQUENCE ship MINVALUE 0;

 

        До послідовності також можна звернутися командою SELECT, як до таблиці, хоча така можливість використовується відносно рідко, наприклад, під час випробування або перевірки послідовності. При складанні запиту до послідовності в списку вибірки вказуються її атрибути, перелічені в таблиці. 5.1.

        Таблиця 5.1. Атрибути послідовності

Атрибут

Тип

Примітка

sequence_name

name

Ім’я послідовності

last_value

integer

Поточне значення

increment_by

integer

Нарощення

max_value

integer

Максимальне значення

min_value

integer

Мінімальне значення

cache_value

integer

Об’єм кеша, байт

log_cnt

integer

is_cycled

"char"

is_called

"char"

       Нижче показано запит до послідовності ship. Він повертає атрибути last_value (поточне значення, оскільки послідовність щойно створена, то воно мінімально задане і дорівнює 0) та increment_by (приріст, за замовчуванням дорівнює 1).

SELECT last_value, increment_by FROM ship;

        Як правило, всі операції з послідовностями виконуються за допомогою таких трьох спеціальних функцій PostgreSQL:

  •  nextval( ‘послідовність) – нарощує поточне і повертає нове значення;
  •  currval(‘послідовність) – повертає поточне значення;
  •  setval (‘послідовність, n) – змінює поточне значення на число n.

 

        Нижче в прикладі виводиться пара чергових значень послідовності ship.

SELECT nextval('ship');

 nextval

---------

      1

 

SELECT nextval('ship');

nextval

---------

      2

        Як бачимо, при першому виклику функція nextval() повернула початкове (задане ключовим словом START) значення послідовності, коли приріст ще не відбувся. При всіх подальших викликах nextval() атрибут last_value змінюється.

        Послідовності найчастіше використовуються для задавання значень за замовчуванням у полях таблиць. Нехай таблицю pidpr створено командою:

CREATE TABLE pidpr(

                                     kod_p integer PRIMARY KEY DEFAULT nextval('ship'), 

                                     naz_p character(50), 

                                     misto character(30)

                                    );

 

Тут поле kod_p має обмеження DEFAULT,  функція nextval('ship') якого буде надавати кожного разу нарощені на одиницю значення за замовчуванням, вироблені послідовністю ship. Це поле має також обмеження PRIMARY KEY, яке, нагадаємо, означає ще й обмеження UNIQUE, тому в нього неможливо буде помилково занести неунікальні значення.

         Тепер команда вставки даних у таблицю pidpr може виглядати, наприклад, так:

INSERT INTO pidpr(naz_p, misto) VALUES('Уренгой – Помари – Ужгород', 'Полтава');

Під час виконання команди код підпримства kod_p буде занесений у таблицю автоматично.

        Змінити поточне значення послідовності дозволяє функція setval(), нижче показано, що значення послідовності ship змінюється на 1010, а далі нарощується на 1, тому дорівнює 1011:

SELECT setval('ship', 1010);

 setval

--------

  1010

SELECT nextval('ship');

nextval

---------

   1011

        Видалення послідовності забезпечує команда SQL DROP SEQUENCE, вона видаляє одну або декілька послідовностей одночасно. Ця команда має такий вигляд:

DROP SEQUENCE перелік_послідовностей

        Приклад видалення послідовності ship:

DROP SEQUENCE ship;

 

        Перш ніж знищувати послідовність, слід переконатися в тому, що вона не використовується іншою таблицею, функцією або іншим об’єктом бази даних. Якщо забути про цю перевірку, то можна порушити роботу інших операцій, залежних від даної послідовності. Вивести імена всіх таблиць, в яких використовується задана послідовність можна за допомогою такого запиту:

 SELECT p.relname, a.adsrc FROM pg_class p

        JOIN pg_attrdef a ON (p.relfilenode = a.adrelid)

        WHERE a.adsrc ~ '"sequence_name "';

        Приклад пошуку імен таблиць, у яких використовується послідовність ship.

SELECT p.relname, a.adsrc FROM pg_class p JOIN pg_attrdef a

        ON (p.relfilenode = a.adrelid)

       WHERE a.adsrc ~ '"ship"';

 relname  |                  adsrc

-----------+------------------------------------------

shipments | nextval('"shipments_ship_id_seq"'::text)


 

А также другие работы, которые могут Вас заинтересовать

40367. Нарушение ощущения и восприятия 39.5 KB
  Психосенсорные расстройства встречаются при эпилепсии энцефалитах и опухолях мозга могут быть следствием органических поражений теменнозатылочиых отделов и области межуточного мозга К расстройствам восприятия относят иллюзии и галлюцинации. Галлюцинации сенсорное восприятие имеющее характер истинного восприятия но в отсутствие внешнего раздражения органов чувств. Галлюцинации классифицируют по органам чувств как слуховые наиболее часто встречаемые зрительные тактильные обонятельные. элементарные фотопсип элементарные зрительные...
40368. Нарушения памяти и интеллекта 52 KB
  Реферат на тему Нарушения памяти и интеллекта Выполнила студентка 9 группы 5 курса лечебного факультета Бекк Елена Георгиевна Новосибирск 2006 АМНЕСТИЧЕСКИЕ СИНДРОМЫ. В структуре психоорганического синдрома мы видим триаду симптоматики то есть поражаются в основном три сферы: первая сфера память нарушение интеллекта вторая сфера нарушение эмоций третья сфера нарушение воли Вместе с тем что поражается память у больных вскоре заметна становится аффективная нейустойчивость аффективная лабильность недержание эмоций. Деменция ...
40369. Некоторые особенности диагностики и лечения аффективных расстройств 51 KB
  Леонгард разделял пациентов с маниакальнодепрессивным психозом и пациентов с депрессиями отмечая что первое из вышеперечисленных заболеваний имеет более тесное родство с аффективными расстройствами. были выявлены отличия в анамнезе пациентов с биполярными и униполярными расстройствами. В ходе исследования было обнаружено что у пациентов с маниакальнодепрессивным психозом чаще встречались в анамнезе аффективные расстройства в частности маниакальные. В частности в группе пациентов с маниакальнодепрессивным психозом заболевание начиналось...
40370. Непрерывнотекущая шизофрения 40 KB
  Диапазон ее клинических вариантов по степени прогредиентности чрезвычайно широк от юношеской злокачественной шизофрении до вялотекущей проявляющейся в основном расстройствами неврозоподобного характера. Между этими крайними вариантами непрерывнотекущей шизофрении среднее место занимает параноидная шизофрения отличающаяся средней степенью прогредиентности. При непрерывнотекущей шизофрении наблюдаются экзацербации и послабления процесса нередко констатируется спонтанная или медикаментозная стабилизация однако ремиссии для этой формы...
40371. Параноидная шизофрения 37.5 KB
  Magnan 1891 и характеризующих картину хронического бреда. В стереотипе развития бредовых синдромов в типичных случаях наблюдаются этап бреда не сопровождающегося галлюцинациями и явлениями психического автоматизма паранойяльный синдром этапы параноидного бреда синдром Кандинского Клерамбо и фантастического бреда парафренный синдром [Курашев С. Манифестация болезни проявляется развитием интерпретативного бреда с большей или меньшей степенью систематизации бредовых идей. При бредовом варианте параноидной шизофрении манифестный...
40372. Парафренный синдром 27.5 KB
  Состояние в котором сочетаются фантастический бред величия бред преследования и воздействия явления психического автоматизма изменения аффекта. Содержание фантастического бреда редко бывает постоянным чаще оно склонно к расширению вариациям постоянно обогащается новыми фактами иногда крайне изменчиво. Идеи преследования становятся почти постоянным ингредиентом синдрома в ряде случаев бред бывает антагонистическим: наряду с преследователями врагами существуют силы стоящие на стороне больного. В структуре синдрома значительное место...
40373. Патологическое опьянение 23.5 KB
  Картина патологического опьянения и внешне мало напоминает алкогольное опьянение поскольку отсутствуют нарушения статики и координации движений а также пантомимические особенности характерные для облика опьяневшего человека. По существу патологическое опьянение это транзиторный психоз а в синдромологическом отношении сумеречное состояние сознания. Патологическое опьянение возникает внезапно и так же внезапно обрывается часто заканчиваясь глубоким сном.
40374. Побочные эффекты и осложнения при лечении психотропными средствами. Общие принципы лечения при побочных эффектах и осложнениях психофармакотерапии 54 KB
  Общие принципы лечения при побочных эффектах и осложнениях психофармакотерапии Побочные эффекты и осложнения при лечении психотропными средствами Побочные эффекты при психофармакотерапии как и при использовании многих других лекарственных средств связаны с невозможностью избирательно влиять исключительно на патологически измененные системы мозга. Другие же побочные эффекты и осложнения возникающие обычно редко обусловлены индивидуальными реакциями пациента на тот или иной препарат. В данном разделе будут рассмотрены только наиболее...
40375. Побочные эффекты транквилизаторов и их роль в пограничной психиатрии 46 KB
  Общая характеристика транквилизаторов К основным группам транквилизаторов по химической структуре относятся: 1 производные глицерола мепробамат; 2 производные бензодиазепина элениум диазепам лоразепам феназепам клоназепам альпразолам и многие другие; 3 производные триметоксибензойной кислоты триоксазин; 4 производные азапирона буспирон; 5 производные другой химической структуры амизил гидроксизин оксилидин мебикар мексидол и другие. Выделяют следующие клиникофармакологические эффекты...