powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Создание Хранимых функций и тригеров (важно)
2 сообщений из 2, страница 1 из 1
Создание Хранимых функций и тригеров (важно)
    #38558255
lexflax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
На днях предстоит экзамен по postgressql, будут два билета про Хранимые процедуры и Триггеры.
Я в общих чертах знаю sql , но ранее с функциями и триггерами не сталкивался...
Почитал про хранимые процедуры
Храни́мая процеду́р а — объект базы данных, представляющий собой набор SQL-инструкций, который компилируется один раз и хранится на сервере.
Хочется понять разницу между обычной процедурой и Хранимой процедурой .
Нашел такую разницу - Вместо хранения часто используемого запроса, клиенты могут ссылаться на соответствующую хранимую процедуру. При вызове хранимой процедуры её содержимое сразу же обрабатывается сервером.
И то что хранимая процедура вызывается с помощью функции CALL и EXECUTE.
Если есть еще какие то различия подскажите пожалуйста...
По поводу Триггеров
Триггеры предназначены для автоматического выполнения отдельных процедур в зависимости от операции, для которой они были назначены. Триггеры могут быть назначены до или после операций INSERT, UPDATE или DELETE как для случаев изменения записи в таблице так и для случая выполнения оператора SQL. Если произошло событие, на которое был назначен триггер, то вызывается закреплённая за этим триггером процедура.

Начиная с 9.0.x есть триггеры на колонки (столбцы) и кроме того, при объявлении триггера можно использовать ключевое слово WHEN, добавляющее дополнительное условие для срабатывания триггера.

Если с теорией еще более менее есть понимание что это такое... То с практикой вообще беда... А билеты по данным вопросам будут именно по части практики, врядли задания сложные будут, но сейчас на данном этапе я даже простые сделать не смогу потому что не представляю как прописывается в postgresql Хранимые процедуры и триггеры на примере какой нибудь самой простой базы данных.
Помогите, покажите простые но рабочие примеры по хранимым процедурам и тригерам на примере простой какой нибудь базе с пару таблиц, чтоб можно было оттолкнутся от этого и чтоб само понимание пришло...

Нашел вот такой пример функции , но так понимаю не хранимой, а простой, но даже это пример не до конца понимаю..
CREATE FUNCTION sales_tax(subtotal REAL) RETURNS REAL AS $$
BEGIN
RETURN subtotal * 0.06;
END;
$$ LANGUAGE plpgsql;

В первой строчке понимаю что идет создание функции, название функции sales_tax, тип передаваемого или используемого аргумента типа REAL, А вот эта часть не совсем понятна "RETURNS REAL AS $$ " Ну RETURNS REAL я так понимаю вернуть значение типа Real, AS обычно используется для объявления псевдонима но тут не вижу какого именно псевдонима... Не понятные два значка $$ что они значат не пойму...
Потом в теле процедуры снова встречается слово "RETURN" а именно RETURN subtotal * 0.06;
В процедуры нужно дважды указывать слово RETURN? одно в шапке а другое в теле процедуры???
Нашел другой пример той же функции

CREATE FUNCTION sales_tax(REAL) RETURNS REAL AS $$
DECLARE
subtotal ALIAS FOR $1;
BEGIN
RETURN subtotal * 0.06;
END;
$$ LANGUAGE plpgsql;

Только добавилась часть DECLARE в которой обычно описываются переменные и фраза subtotal из шапки перенесена именно в этот раздел...
Помогите все понять это, кто уже этим хорошо владеет а когда то начинал как и я уверен сможет понятно и доходчиво описать все как есть об этих вещах, очень важно для меня, заранее спасибо..
...
Рейтинг: 0 / 0
Создание Хранимых функций и тригеров (важно)
    #38558324
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.postgresql.org/docs/9.3/interactive/plpgsql-structure.html
Судя по форуму, вы уже второй год (второй курс) sql изучаете, но документацию читать не хотите. Заучиваете заклинания перед экзаменом?

Первый RETURNS - определяет тип данных, возвращаемых процедурой. Это часть заголовка процедуры.
Второй RETURN (без буковки S на конце) - собственно возвращает значение внутри тела процедуры.

Дом. задание: что значит S в конце некоторых английских слов?
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Создание Хранимых функций и тригеров (важно)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]