DECLARE [VARIABLE] <
жергілікті ауысым атауы > {
<
деректер түрі>
| <
домен атауы>
| TYPE OF <
домен атауы>
}
Бір мәлімдемеде тек бір жергілікті айнымалы мәнді жариялай алады.
Іске қосу және сақтау процедурасында әрбір айнымалы үшін жеке
DECLARE VARIABLE операторын пайдаланып, жергілікті айнымалы
мәндердің ерікті санын жариялай алады. Жергілікті айнымалы атау
жергілікті бағдарлама нысанында сақталатын іс рәсімінің кіріс және
шығыс параметрлерінің жергілікті айнымалы атауларының арасында
бірегей болуы керек. Деректер түрі SQL түрінде пайдаланылатын
деректердің кез келген түрі болуы мүмкін. Деректер түрінің орнына
бұрын құрылған доменнің атауын көрсетуге болады.
12.5.2.
Тиггерлермен жұмыс
Ұшыру мета-деректерді дерекқорында сақталады және сервер
жағында орындалатын бағдарлама. Триггерге тікелей кіру мүмкін емес.
Бір нақты кестеге (көрініске) қатысты бір немесе бірнеше оқиғалар
немесе дерекқор оқиғаларының бірі болғанда, ол автоматты түрде
шақырылады. Кесте оқиғасы пайда болған кезде іске қосылатын кесте
немесе көрініс, сол кесте немесе көрініс үшін бір немесе бірнеше
оқиғалар (деректерді қосу, өзгерту немесе жою) және осындай оқиғаның
дәл бір кезеңі (оқиғадан бұрын немесе кейін) байланысты іске
қосылады. Триггер транзакция контекстінде тиісті оқиғаға себеп болған
бағдарлама аясында орындалады. Ерекшелік дерекқор оқиғаларына
жауап беретін триггерлер болып табылады. Кейбіреулер үшін әдепкі
транзакция басталады.
Кестеге арналған «оқиға фазасы» қатынасының алты нұсқасы бар
(өкілдік):
1)
Жаңа жолды қосқанға дейін (BEFORE INSERT);
2)
Жаңа жолды қосқаннан соң (AFTER INSERT);
3)
Жолды өзгерткенге дейін (BEFORE UPDATE);
4)
Жолды өзгерткен соң (AFTER UPDATE);
5)
Жолды өшіруге дейін (BEFORE DELETE);
6)
Жолды өшірген соң (AFTER DELETE).
274
Дерекқор оқиғаларына байланысты триггер келесі оқиғаларда
шақырылуы мүмкін:
1)
дерекқорға (CONNECT) қосылса, триггер орындалмас бұрын,
әдепкі бойынша операция автоматты түрде басталады;
2)
дерекқордан (DISCONNECT) ажыратылса, триггер орындалмас
бұрын әдепкі транзакция басталады;
3)
транзакция басталған кезде (TRANSACTION START), триггер
осы мәміленің контексінде орындалады;
4)
мәміле расталған кезде (TRANSACTION COMMIT), триггер осы
мәміленің контексінде орындалады;
5)
мәміле бұзылған кезде (TRANSACTION ROLLBACK), триггер
операция мәмілесі бойынша орындалады.
Бір кесте (көрініс) үшін, бір фаза және бір оқиға үшін, сондай-ақ бір
фаза және бірнеше оқиғалар үшін автоматты түрде шақырылатын
триггерлер жасауыңызға болады.
Егер бір кестеге (көрініске), бір оқиғаның және бір фазаның бірнеше
триггерлері бар болса, оларды орындау тізбегін көрсете аласыз, осы
тізбектегі триггер позициясын көрсете аласыз.
Триггер жасау үшін, синтаксисі төменде көрсетілген CREATE
TRIGGER
операторын пайдаланыңыз:
CREATE TRIGGER <
триггер атауы>
[ACTIVE | INACTIVE}
{ ON <
деректер қорының әрекеті>
| FOR {<
кесте атауы> | <көрініс атауы>}
{BEFORE | AFTER}
<
кесте әрекеті (көрініс)>
[OR <
кесте әрекеті (көрініс)>] . . .
| {BEFORE | AFTER}
<
кесте әрекеті (көрініс)>
[OR <
кесте әрекеті (көрініс)>] . . .
ON {<
кесте атауы> | <көрініс атауы>}
}
[POSITION <
бүтін>]
AS <
триггер ағзасы>;
<
кесте әрекеті (көрініс)> ::=
{INSERT | UPDATE | DELETE}
<
деректер қорының әрекеті> : : =
{ CONNECT |
DISCONNECT |
TRANSACTION START
275
| TRANSACTION COMMIT | TRANSACTION
ROLLBACK }
Триггер белсенді (ACTIVE) немесе белсенді емес (IN-ACTIVE)
болуы мүмкін. Егер триггер белсенді (әдепкі мән) болса, ол кестенің
немесе дерекқордың сәйкес оқиғасы (лері) болғанда автоматты түрде
шақырылады. Триггер белсенді емес болса, триггер пайда болмайды.
Триггердің дене құрылымы:
[<
жергілікті үздіксіз хабарламасы>]
BEGIN
<
оператор>
[<
оператор> ... ]
END
Триггері органға жергілікті айнымалылар сипаттамасы кейін ирек
жақша Қоса беріліп отырған есептілігіне BEGIN және END блок болуы
тиіс.
Триггерлер үшін OLD және NEW нақты контекстік айнымалылар
бар. Осы кілт сөздердің неғұрлым дұрыс атауы - баған атауы префикс.
триггерлер және өзгерту (Баған атауының алдында жаңа және нүктесін
орналасқан) кейін (осы кілт сөз ескі және нүкте Баған атауының алдында
қойылады үшін) клиент оны өзгерту үшін кесте кез келген бағанының
(
қарау) мәнін кіре аласыз.
Триггерлер барлық түрлері үшін айнымалы контекстен OLD (баған
префикс) айнымалы тек оқу болып табылады. Бұл қарамастан фазалық
оқиғалардың, деректерді қосу кезінде туындаған триггерлер қол
жетімді.
(
Кейін) фаза оқиғалар үшін триггерлер жаңа контекст айнымалылар,
сондай-ақ айнымалы тек оқу болып табылады. Деректерді жою оқиғасы
үшін триггерлерде қол жетімді емес.
OLD
мәні. Бағанның атауы - мүмкін болатын өзгерістерді жасамас
бұрын жасалған бағанның күйіне сілтеме жасауға мүмкіндік береді.
Мән NEW. Бағанның атауы - мүмкін өзгерістерді жасағаннан кейін
бағанның жағдайына сілтеме жасауға мүмкіндік береді.
Мысалы:
CREATE TRIGGER BU_TOVARY FOR
TOVARY ACTIVE
BEFORE UPDATE AS
276
Достарыңызбен бөлісу: |