Тригери срещу курсори
В база данни, тригерът е процедура (кодов сегмент), която се изпълнява автоматично, когато в таблица / изглед се случват някои конкретни събития. Сред другите му приложения, тригерите се използват главно за поддържане на целостта в база данни. Курсорът е контролна структура, използвана в базите данни за преминаване през записите в базата данни. Той е много подобен на итератора, предоставен от много езици за програмиране.
Какво представляват тригерите?
Задействането е процедура (кодов сегмент), която се изпълнява автоматично, когато в таблица / изглед на база данни се случват някои конкретни събития. Сред другите му приложения, тригерите се използват главно за поддържане на целостта в база данни. Тригерите се използват и за налагане на бизнес правила, одит на промените в базата данни и репликиране на данни. Най-честите задействания са задействанията на език за манипулиране на данни (DML), които се задействат при манипулиране на данни. Някои системи от бази данни поддържат задействания без данни, които се задействат при възникване на събития на езика на дефиниране на данни (DDL). Някои примери са задействания, които се задействат, когато се създават таблици, по време на извършване на операции за извършване на прехвърляне или връщане и т.н. Тези задействания могат да бъдат използвани особено за одит. Системата за бази данни Oracle поддържа задействания на схеми на ниво (т.е. тригери, задействани при модифициране на схемите на базата данни), като After Creation, Before Alter, After Alter, Before Drop, After Drop и др. Задействащи нивото на колоната, задействания за всеки тип редове и за всяко задействане на тип отчети.
Какво представляват курсорите?
Курсорът е контролна структура, използвана в базите данни за преминаване през записите в базата данни. Той е много подобен на итератора, предоставен от много езици за програмиране. В допълнение към преминаването през записи в база данни, курсорите улесняват и извличането на данни, добавянето и изтриването на записи. Определяйки правилния начин, курсорите могат да се използват и за преминаване назад. Когато SQL заявката върне набор от редове, те всъщност се обработват с помощта на курсори. Курсорът трябва да бъде деклариран и да му бъде присвоено име, преди да може да бъде използван. Тогава курсорът трябва да се отвори с помощта на командата ОТВОРЕНО. Тази операция би поставила курсора точно преди първия ред от набора от резултати. Тогава курсорът трябва да извърши операцията FETCH, за да получи действително ред данни в приложението. И накрая, курсорът трябва да бъде затворен с помощта на операцията ЗАКРИВАНЕ. Затворените курсори могат да бъдат отворени отново.
Каква е разликата между тригери и курсори?
Задействането е процедура (кодов сегмент), която се изпълнява автоматично, когато в таблица / изглед на база данни се появяват някои специфични събития, докато курсорът е контролна структура, използвана в базите данни за преминаване през записите в базата данни. Курсорът може да бъде деклариран и използван в тригер. В такава ситуация заявлението за деклариране ще бъде вътре в спусъка. Тогава обхватът на курсора ще бъде ограничен до този спусък. В рамките на тригер, ако курсорът е деклариран на вмъкната или изтрита таблица, такъв курсор няма да бъде достъпен от вложен тригер. След като задейства задействането, всички курсори, създадени в рамките на спусъка, ще бъдат премахнати.