|
|
|
Создание Хранимых функций и тригеров (важно)
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. На днях предстоит экзамен по 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 из шапки перенесена именно в этот раздел... Помогите все понять это, кто уже этим хорошо владеет а когда то начинал как и я уверен сможет понятно и доходчиво описать все как есть об этих вещах, очень важно для меня, заранее спасибо.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2014, 12:01:54 |
|
||
|
Создание Хранимых функций и тригеров (важно)
|
|||
|---|---|---|---|
|
#18+
http://www.postgresql.org/docs/9.3/interactive/plpgsql-structure.html Судя по форуму, вы уже второй год (второй курс) sql изучаете, но документацию читать не хотите. Заучиваете заклинания перед экзаменом? Первый RETURNS - определяет тип данных, возвращаемых процедурой. Это часть заголовка процедуры. Второй RETURN (без буковки S на конце) - собственно возвращает значение внутри тела процедуры. Дом. задание: что значит S в конце некоторых английских слов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2014, 12:38:08 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38558324&tid=1998853]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
182ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 187ms |
| total: | 449ms |

| 0 / 0 |
