Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к зачету.docx
Скачиваний:
6
Добавлен:
19.09.2019
Размер:
590.16 Кб
Скачать

Триггеры.

Хранимые процедуры – функциональные модули, которые содержат: логические операторы (IF ... THEN ... ELSE), операторы перехода по условию (SWITCH ... CASE ...), операторы циклов (FOR, WHILE, UNTIL) и операторы передачи управления в процедуры (CALL, RETURN) и хранятся на сервере.

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

CREATE TRIGGER <имя_триггера>

ON <имя_таблицы>

FOR { INSERT | UPDATE | DELETE }

AS <SQL_оператор>

  1. SQL в среде программирования. Обзор интерфейсов PL/pgSQL, ODBC, PHP.

С хема взаимодействия клиентского приложения с сервером базы данных в общем случае архитектуры «Клиент» - «Сервер» выглядит так:

Архитектура «Клиент» - «Агент» - «Сервер» с участием средств ОСПО:

Сетевой агент - программное средство ОСПО, устанавливаемое на клиентской стороне и выполняющее следующие функции:

  • прием запросов от клиентских приложений;

  • установление соответствия между <именем ЛМ> и <сетевым адресом узла ЛВС> посредством обращения к соответствующим сервисам ОСПО;

  • установление соединения (сетевого или локального) с сервером СУБД по защищенной магистрами обмена данными;

  • передачу запросов клиентских приложений серверу СУБД;

  • прием результатов обработки запросов;

  • передачу результатов обработки клиентскому приложению.

Сетевые средства сервера - программные средства, функционирующие в составе сервера СУБД и выполняющие следующие функции:

  • прием запросов подключений от сетевых агентов;

  • запуск потоков, обслуживающих клиентские запросы;

  • получение и передача клиентских запросов ядру СУБД ;

  • получение от ядра результатов выполнения запросов и передачу их сетевым агентам.

Любое клиентское приложение может быть подключено к бд одним из двух способов:

  • С использованием специализированной библиотеки доступа (db-dll);

  • С использованием odbc-драйвера (см. Далее).

Библиотека доступа (DB-DLL) - это, как правило, объектный файл, исходный код которого создан на универсальном языке типа C. Эта библиотека содержит набор функций, позволяющих пользовательскому приложению соединяться с базой данных, передавать запросы серверу и получать ответные данные.

Обзор интерфейсов PL/pgSQL

Состав SQL-операций:

CREATE TABLE people (…………..)

INSERT INTO people (……………)

Обзор интерфейсов стандарта ODBC (SQL/CLI)

ODBC (Open Database Connetcivity - открытый интерфейс к базам данных) представляет собой программный слой, унифицирующий интерфейс приложений с базами данных. За реализацию особенностей доступа к каждой отдельной СУБД отвечает специальный ODBC-драйвер, доступ к которому - стандартизован на уровне обращений к Менеджеру ODBC-драйверов. Пользовательское приложение этих особенностей не видит, т.к. взаимодействует с универсальным программным слоем более высокого уровня. Таким образом, приложение становится в значительной степени независимым от СУБД. Недостаток - увеличивается время обработки запросов (как следствие введения дополнительного программного слоя).

Компоненты архитектуры:

  • Прикладная программа, Менеджер драйверов, Драйвер, Источник данных

Интерфейсные группы:

  1. Создание у себя окружения - SQLAllocEnv(…) передается указатель на указатель

  2. Установить соединение с БД - SQLAllocConnect

  3. Выполненить операции с данными SQLExecute перед PrepareExecdirect

  4. Обработка результата операции

  5. Разорвать соединение с БД (если больше ничего не надо делать)

  6. Освободить перем. Окружение

Для Windows, драйвер ODBC регистрируется в реестре. Источник данных – говорит о том, что сущ. Такая БД.

Алгоритм использования ODBC в прикладных программах

Уровни соответствия SQL в ODBC:

  • Минимальный

DDL : CREATE / DROP TABLE

DML : «простые» выражения SELECT, INSERT, UPDATE, DELETE

  • Базовый (включает грамматику минимального уровня)

DDL : ALTER TABLE, CREATE / DROP INDEX, CREATE / DROP VIEW, GRANT / REVOKE

DML : «полные» формы SELECT, UPDATE, DELETE, функции агрегирования

  • Расширенный (включает грамматику базового уровня)

DML : внешние соединения, скалярные выражения, групповые операторы (транзакции), вызовы процедур

  1. Реализация доступа к данным с использованием курсоров. Проблемы модификации данных в курсоре. Хранимые процедуры и функции.

Реализация доступа к данным с использованием курсоров

Основная проблема - SELECT, как правило, порождает таблицу с множеством строк и столбцов(результирующее множество), а включающий язык не обладает средствами, позволяющими оперировать одновременно более чем одной записью (строкой). По этим причинам необходимо обеспечить своего рода мост между уровнем множеств языка SQL и уровнем записей включающего языка. Такой мост обеспечивают курсоры. Курсор состоит, по существу, из некоторого рода указателя, который может использоваться для просмотра множества записей. Однако нередко программе требуются в каждый момент времени значения только из одной строки какой-либо таблицы, и для этого используется единичный SELECT, формат которого имеет вид:

SELECT [[ALL] | DISTINCT]{ * | элемент_select [,элемент_select] ...}