ПостгреСКЛ окидач: Пример креирања, испуштања

Преглед садржаја:

Anonim

Шта су Постгрескл окидачи?

Окидач ПостгреСКЛ је функција која се аутоматски покреће када се догађај базе података догоди на објекту базе података. На пример, сто.

Примери догађаја базе података који могу активирати окидач укључују ИНСЕРТ, УПДАТЕ, ДЕЛЕТЕ итд. Штавише, када креирате окидач за табелу, окидач ће се аутоматски спустити кад се табела избрише.

У овом водичу за ПостгреСКЛ научићете следеће:

  • Шта су Постгрескл окидачи?
  • Како се окидач користи у ПОСРГРЕКЛ-у?
  • Креирање окидача
  • Коришћење пгАдмин
  • Испуштање окидача

Како се окидач користи у ПОСРГРЕКЛ-у?

Окидач се може означити оператором ЗА СВАКИ РЕД током његовог стварања. Такав окидач позваће се једном за сваки ред модификован операцијом. Окидач се такође може означити оператором ЗА СВАКУ ИЗЈАВУ током његовог стварања. Овај окидач ће се извршити само једном за одређену операцију.

Креирање окидача

Да бисмо креирали окидач, користимо функцију ЦРЕАТЕ ТРИГГЕР. Ево синтаксе функције:

CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-nameON table-name[-- Trigger logic];

Име окидача је име окидача.

ПРЕ, ПОСЛЕ И УМЕСТО ОФ су кључне речи које одређују када ће се активирати окидач.

Име догађаја је име догађаја због којег ће се активирати окидач. То може бити ИНСЕРТ, УПДАТЕ, ДЕЛЕТЕ итд.

Име табеле је име табеле на којој ће се креирати окидач.

Ако ће се окидач креирати за ИНСЕРТ операцију, морамо додати параметар ОН име-ступца.

Следећа синтакса то показује:

CREATE TRIGGER trigger-name AFTER INSERT ON column-nameON table-name[-- Trigger logic];

На пример:

Користићемо доњу табелу цена:

Цена:

Креирајмо још једну табелу, Прице_Аудитс, где ћемо евидентирати промене направљене у табели Прице:

CREATE TABLE Price_Audits (book_id INT NOT NULL,entry_date text NOT NULL);

Сада можемо дефинисати нову функцију која се зове аудитфунц:

CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$BEGININSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp);RETURN NEW;END;$my_table$ LANGUAGE plpgsql;

Горња функција ће уметнути запис у табелу Прице_Аудитс укључујући нови ИД реда и време када је запис креиран.

Сада када имамо функцију окидача, требали бисмо је везати за нашу табелу цена. Окидачу ћемо дати име прице_триггер. Пре него што се креира нови запис, аутоматски ће се активирати функција окидача за евидентирање промена. Ево окидача:

CREATE TRIGGER price_trigger AFTER INSERT ON PriceFOR EACH ROW EXECUTE PROCEDURE auditfunc();

Убацимо нови запис у табелу цена:

INSERT INTO PriceVALUES (3, 400);

Сада када смо убацили запис у табелу Цена, запис такође треба убацити у табелу Прице_Аудит. Ово ће бити резултат окидача који смо креирали на табели Цена. Проверимо ово:

SELECT * FROM Price_Audits;

Ово ће вратити следеће:

Окидач је успешно радио.

Окидачи за уврштавање

Сви окидачи које креирате у ПостгреСКЛ-у чувају се у табели пг_триггер. Да бисте видели листу окидача које имате у бази података, потражите табелу покретањем наредбе СЕЛЕЦТ као што је приказано доле:

SELECT tgname FROM pg_trigger;

Ово враћа следеће:

Ступац тгнаме табеле пг_триггер означава име окидача.

Окидачи за испуштање

За испуштање окидача ПостгреСКЛ користимо израз ДРОП ТРИГГЕР са следећом синтаксом:

DROP TRIGGER [IF EXISTS] trigger-nameON table-name [ CASCADE | RESTRICT ];

Параметар име окидача означава име окидача који се жели избрисати.

Назив табеле означава назив табеле из које ће се окидач обрисати.

Клаузула ИФ ЕКСИСТС покушава избрисати окидач који постоји. Ако покушате да избришете окидач који не постоји без употребе клаузуле ИФ ЕКСИСТС, добићете грешку.

Опција ЦАСЦАДЕ ће вам помоћи да аутоматски уклоните све објекте који зависе од окидача.

Ако користите опцију РЕСТРИЦТ, окидач се неће избрисати ако објекти зависе од њега.

На пример:

Да бисмо обрисали окидач назван екампле_триггер у табели Прице, покренули смо следећу команду:

Да бисте спустили окидач назван екампле_триггер на табели Цомпани, покрените следећу наредбу:

DROP TRIGGER example_trigger IF EXISTSON Company;

Коришћење пгАдмин

Сада да видимо како су се извршиле све три акције помоћу пгАдмин.

Креирање окидача

Да бисте то постигли путем пгАдмин-а, урадите ово:

Корак 1) Пријавите се на свој пгАдмин налог.

Корак 2)

  1. На траци за навигацију са леве стране кликните на Базе података.
  2. Кликните Демо.

Корак 3) Да бисте креирали табелу Прице_Аудитс, откуцајте уређивач упита:

CREATE TABLE Price_Audits (book_id INT NOT NULL,entry_date text NOT NULL)

Корак 4) Кликните на дугме Изврши.

Корак 5) Покрените следећи код да бисте дефинисали функцију аудитфунц:

CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$BEGININSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp);RETURN NEW;END;$my_table$ LANGUAGE plpgsql

Корак 6) Покрените следећи код да бисте креирали покретач прице_триггер:

CREATE TRIGGER price_trigger AFTER INSERT ON PriceFOR EACH ROW EXECUTE PROCEDURE auditfunc()

Корак 7)

  1. Покрените следећу команду да бисте у табелу са ценама убацили нови запис:
    INSERT INTO PriceVALUES (3, 400)
  2. Покрените следећу наредбу да бисте проверили да ли је запис убачен у табелу Прице_Аудитс:
    SELECT * FROM Price_Audits

    Ово би требало да врати следеће:

Корак 8) Проверимо садржај табеле Прице_Аудитс:

Окидачи за уврштавање

Корак 1) Покрените следећу наредбу да бисте проверили окидаче у вашој бази података:

SELECT tgname FROM pg_trigger

Ово враћа следеће:

Испуштање окидача

Да бисте спустили окидач назван екампле_триггер на табели Цомпани, покрените следећу наредбу:

DROP TRIGGER example_trigger IF EXISTSON Company

Резиме:

  • Окидач ПостгреСКЛ односи се на функцију која се аутоматски покреће када се догађај базе података догоди на објекту базе података, као што је табела.
  • Примери таквих догађаја из базе података укључују ИНСЕРТ, УПДАТЕ, ДЕЛЕТЕ итд.
  • Окидач постоји само током живота објекта базе података за који је створен.
  • Ако се објект базе података избрише, окидач ће се такође избрисати.
  • ПостгреСКЛ окидачи се креирају помоћу израза ЦРЕАТЕ ТРИГГЕР.
  • Сваки окидач је повезан са функцијом која наводи шта ће окидач радити када се позове.

Преузмите базу података кориштену у овом водичу