понедельник, 31 октября 2011 г.

Oracle Database 11g: Новые возможности в PL/SQL

    Для людей желающих прочитать про плюшки, которые есть в Oracle 11g рекомендую почитать этот документ. В нём представлен список новых фишек, которые есть в Oracle 11g
    Также есть замечательный вебсайт, но он на английском, где также можно прочитать о новых возможностях разных версий:

Динамический SQL

    Порой случается, что надо чтобы код выполнял запрос, который заранее точно не известен, для решения таких задач в СУБД Oracle существует 3 способа решения данной задачи.
    Здесь я только перечислю те решения, которыми мне доводилось пользоваться, подробности можно почерпнуть из документации Oracle.

четверг, 20 октября 2011 г.

Primary key и триггер

    Поскольку с триггерами у меня мягко говоря не очень, а корпоративная политика гласит: "Триггерами пользоваться сугубо в исключительных ситуациях, когда без них не обойтись" - то изучать их в рабочем процессе не получается.
    Но вопрос: "Как сделать автоинкремент primary key?" - меня не отпускал, то я решил найденное решение записать в блог.

вторник, 18 октября 2011 г.

Индекс порождающий виртуальную колонку

    Я, да и не только я, всегда думал что всё что связано с индексами хранится где-то в недрах базы данных и Oracle скрывает от непосвящённых эти данные, но всё оказалось не так просто.
    Только что наткнулся на очень интересную штуковину - виртуальную колонку, которую я не создавал. Когда начал разбираться выяснил, что индекс на базе функции может добавить в таблицу колонку, о существовании которой вы даже не догадывались.
    В моём случае на одну из колонок был повешен индекс такого вида:

CREATE INDEX IE3_ADDR_DATA ON ADDR_DATA (ADDR_ID ASC, LOWER(VALUE) ASC)
    После этого при запросе к словарю данных user_tab_cols видим колонку SYS_NC00007$, которая в поле DATA_DEFAULT содержит LOWER("VALUE") и полу VIRTUAL_COLUMN хранится значение YES.
    Будьте осторожны при чтении словарей данных и их использовании в обычной жизни.