Създаване и изтриване на тригери в MySQL

Програмиране на тригери в MySQL


Задейства или обикновено се обажда програмиране на "тригери" Те са вид обект, намиращ се в бази данни. Когато определено събитие или операция се извърши в споменатата база данни, нашият тригер автоматично изпълнява действие, за което преди това сме го програмирали.

The тригери те се активират автоматично, когато се извършват операции INSERT, DELETE или UPDATE, които се вмъкват, изтриват или актуализират съответно. Когато изпълняват някое от тези действия, нашите тригери изпълняват инструкция или блок от инструкции, за които преди това са били програмирани.

The структура на тригер в MySQL е следното:

Увеличете

 [DEFINER = {потребител | CURRENT_USER}]
Тази част от кода казва на мениджъра на базата данни кой потребител има привилегии да може да извиква тригерите ни, когато ще възникнат събития на DML. Стойността по подразбиране е CURRENT_USER.

За да изберете името на нашия тригер, трябва да следвате много добър критерий, който е: Първо поставете името на таблицата, след това инициала на операцията DML (I за вмъкване, D за изтриване или U за актуализация) и след това първоначално от момента на изпълнение (или A за след, или B за преди).

 ПРЕДИ | DESPUES DE
Той показва само момента, в който нашият тригер ще бъде изпълнен, тоест ако тригерът е задействан преди събитието DML (преди) или след (след).
 ВМЕСТВАНЕ | ИЗТРИВАНЕ | АКТУАЛИЗИРАНЕ
Той ни казва какво ще бъде изречението, което ще използваме, за да задействаме задействането ни, Insert за въвеждане на данни, Delete за изтриване или Update за модифициране.
 Име на таблицата ON
Той показва таблицата, свързана с нашия тригер.
 ЗА ВСЕКИ РЕД
Той ни казва само, че задействането ще бъде изпълнено за всеки ред от нашата таблица, предварително дефиниран в ON.

The заключителен sql израз или блокът с инструкции ще бъде изречението или изреченията, които нашият тригер ще изпълни, когато влезе в действие.

Практически пример за задействане


Сега ще видим практически пример за това как да програмирате тригер за продажба на автобусни билети за определен маршрут, докато има свободни места.
Можем да използваме всеки софтуер, който приема задействания и съхранени процеси.

1 -ви Създаваме база данни:

2 -ри поред създаваме две таблици в нашата база данни. Единият от тях е мястото, където ще съхраняваме продадените билети, а другият е създаден, за да можем да знаем колко билети са налични за даденото пътуване.

Ето таблицата, която ще съдържа информация относно броя на продадените билети:

След това създаваме таблицата, в която запазваме информацията за броя билети, налични за всяко конкретно пътуване:

3 -ти сега създаваме таблицата за съхранение на различните пътувания:

4 -ти След създаването на базата данни и таблиците ще създадем SQL заявката на тригера, но преди това трябва да знаем какви са НОВИ и СТАРИ идентификатори в тригерите.

За да може нашият тригер да бъде свързан с една или повече конкретни колони от таблицата, трябва да използваме идентификаторите, споменати по -горе НОВО И СТАРО.
СТАР: показва старата стойност на колоната
НОВО: новата стойност, която може да приеме.
Като пример: OLD.idtrip или NEW.idtrip.

С Изявление INSERT Можем да използваме НОВИЯ идентификатор, защото с INSERT генерираната функция е да въведе нови стойности в колоната или колоните.
Ако използваме Изявление DELETE в този случай трябва да използваме OLD идентификатора, защото с DELETE изтриваме стойности, които вече са съществували по -рано.
От друга страна, ако използваме Оператор UPDATE Можем да използваме OLD и NEW, тъй като можем да се позоваваме на стари или нови стойности, тъй като ще променим записи, които вече са съществували за други стойности.

Сега, когато разбираме идентификаторите, sql изявлението ще изглежда така:

Ако изпълним оператора sql в програма, която го поддържа, ще видим това наистина спусъка е създаден.

За да видим как работи, въвеждаме някои логически стойности за пътуване с автобус, например:

Тук въведох в пътуването с идентификатор номер 1, че има свободни 45 места.

След това продаваме билет, например билет, който съответства на място 14:

Когато правим тази заявка, ако отидем в полето current_availability, ще видим, че 45 се е променило на 44, откакто е активиран спусъка „update_availability“.

The предимства от използването на тригери е, че могат да се програмират различни случаи на използване и че целостта на базата данни се поддържа, тоест тя ни дава възможност за създаване на подпрограми, които автоматично изпълняват определени действия, без да е необходимо да ги правите ръчно. Това би било много валидно за валидиране на всякакъв вид информация или за проследяване на движението на базата данни.

Друг много интересен пример, който току -що споменах при валидирането, е определянето на пълнолетие, преди да се произнесе изречение, например:

След като видяхме примерите за създаване на тригери, трябва да знаем как да получим достъп до информацията за тригера. За това ще използваме изреченията:

За да видите тригерите в нашата база данни:

 ПОКАЖЕТЕ ТРИГЕРИ
От друга страна, ако искаме да видим информацията за тригера, създадена в момента:
 ПОКАЖЕТЕ СЪЗДАВАНЕ НА TRIGGER student_BU_trigger
И накрая, след като видяхме как се създават и показват тригери, ще видим какво е изявлението, използвано за премахване на тригер, който имаме в нашата база данни.
За да направим това, просто трябва да използваме типичната команда за изтриване: изпускайте.
 DROP TRIGGER [IF_EXISTS] тригер_име

Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка
wave wave wave wave wave