Trigeris yra duomenų bazėje saugoma procedūra, kuri automatiškai iškviečiama kiekvieną kartą, kai duomenų bazėje įvyksta ypatingas įvykis. Pavyzdžiui, trigerį galima iškviesti, kai eilutė įterpiama į nurodytą lentelę arba kai atnaujinami konkretūs lentelės stulpeliai. Paprastais žodžiais tariant, trigeris yra rinkinys SQL teiginiai su konkrečiais pavadinimais, kurie saugomi sistemos atmintyje. Jis priklauso tam tikrai saugomų procedūrų, kurios automatiškai iškviečiamos reaguojant į duomenų bazės serverio įvykius, klasei. Prie kiekvieno gaiduko yra pritvirtinta lentelė.
Kadangi trigerio negalima tiesiogiai iškviesti, kitaip nei saugomos procedūros, ji vadinama specialia procedūra. Trigeris automatiškai iškviečiamas, kai įvyksta duomenų modifikavimo įvykis prieš lentelę, o tai yra pagrindinis skirtumas tarp trigerio ir procedūros. Kita vertus, saugoma procedūra turi būti iškviesta tiesiogiai.
Toliau pateikiami pagrindiniai trigerių ir saugomų procedūrų skirtumai.
- Trigeriai negali būti iškviesti arba vykdomi rankiniu būdu.
- Nėra tikimybės, kad aktyvikliai gaus parametrus.
- Operacija negali būti įvykdyta arba atšaukta naudojant aktyviklį.
Sintaksė:
sukurti aktyviklį [paleidimo_pavadinimas]
[prieš | po]
Įdėti
[table_name]
[kiekvienai eilutei]
[trigger_body]
Sintaksės paaiškinimas
- Sukurti aktyviklį [paleidimo_pavadinimas]: sukuria arba pakeičia esamą aktyviklį trigerio_pavadinimu.
- [prieš | after]: nurodo, kada bus vykdomas trigeris.
- įterpti : nurodo DML operaciją.
- [table_name]: nurodo lentelės, susietos su aktyvikliu, pavadinimą.
- [kiekvienai eilutei]: nurodomas eilutės lygio aktyviklis, t. y. aktyviklis bus vykdomas kiekvienai paveiktai eilutei.
- [trigger_body]: čia pateikiama operacija, kuri turi būti atlikta suaktyvinant paleidiklį
Kodėl mes naudojame trigerius?
Kai tam tikrais pageidaujamais scenarijais kai kuriuos veiksmus turime atlikti automatiškai, paleidikliai bus naudingi. Pavyzdžiui, turime žinoti apie nuolat besikeičiančios lentelės pakeitimų dažnumą ir laiką. Tokiais atvejais galėtume sukurti aktyviklį, kad būtų galima įterpti reikiamus duomenis į kitą lentelę, jei pirminėje lentelėje buvo atlikti kokių nors pakeitimų.
Įvairūs trigerių tipai SQL serveryje
Yra dvi aktyviklių kategorijos:
- DDL trigeris
- DML aktyviklis
- Prisijungimo aktyvikliai
DDL trigeriai
Duomenų apibrėžimo kalbos (DDL) komandų įvykiai, pvz., Create_table, Create_view, drop_table, Drop_view ir Alter_table, suaktyvina DDL aktyviklius.
SQL serveris
create trigger safety on database for create_table,alter_table,drop_table as print 'you can not create,drop and alter tab>
Išvestis:
DML aktyvikliai
Duomenys naudoja manipuliavimo kalbos (DML) komandų įvykius, kurie prasideda Įterpti, Atnaujinti ir Ištrinti, išjungia DML aktyviklius. atitinkančias įterpti_lentelę, atnaujinimo_vaizdą ir ištrinti_lentelę.
SQL serveris
create trigger deep on emp for insert,update ,delete as print 'you can not insert,update and delete this table i' rollback;>
Išvestis:
Prisijungimo aktyvikliai
prisijungimo paleidikliai yra gaisrai reaguojant į LOGON įvykį. Kai vartotojo sesija sukuriama naudojant SQL serverio egzempliorių, kai baigiamas registravimo autentifikavimo procesas, bet prieš sukuriant vartotojo seansą, įvyksta LOGON įvykis. Dėl to PRINT teiginio pranešimai ir visos trigerio sugeneruotos klaidos bus matomos SQL serverio klaidų žurnale. Autentifikavimo klaidos neleidžia naudoti prisijungimo aktyviklių. Šiuos aktyviklius galima naudoti norint sekti prisijungimo veiklą arba nustatyti seansų, kuriuos gali turėti tam tikras prisijungimas, skaičių, kad būtų galima patikrinti ir valdyti serverio seansus.
Kaip rodomas SQL serverio aktyviklis?
Rodyti arba sąrašo aktyviklis yra naudingas, kai turime daug duomenų bazių su daugybe lentelių. Ši užklausa labai naudinga, kai lentelių pavadinimai yra vienodi keliose duomenų bazėse. Naudodami toliau pateiktą komandą galime peržiūrėti visų SQL serverio aktyviklių sąrašą:
Sintaksė:
FROM sys.triggers, SELECT pavadinimas, yra_vietoj_triggerio
IF tipas = 'TR';
„SQL Server Management Studio“ leidžia labai paprastai rodyti arba išvardyti visus bet kurios lentelės aktyviklius. Tai mums padės atlikti šie veiksmai:
Eikite į Duomenų bazės meniu, pasirinkite norimą duomenų bazę ir išplėskite ją.
- Pasirinkite Lentelės meniu ir jį išplėskite.
- Pasirinkite bet kurią konkrečią lentelę ir išplėskite ją.
Čia rasite įvairių variantų. Kai pasirenkame Trigeriai parinktį, rodomi visi šioje lentelėje galimi aktyvikliai.
PRIEŠ ir PO Trigeris
PRIEŠ trigerius paleiskite trigerio veiksmą prieš paleidžiant paleidimo sakinį. AFTER trigeriai paleidžia paleidimo veiksmą po to, kai paleidžiamas paleidimo sakinys.
Pavyzdys
Suteikta mokinių ataskaitų duomenų bazė, kurioje įrašomas mokinio pažymių įvertinimas. Tokioje schemoje sukurkite trigerį, kad visas nurodytas žymes ir procentas būtų automatiškai įterptas kiekvieną kartą, kai įterpiamas įrašas.
Čia aktyviklis bus iškviestas prieš įterpiant įrašą, kad būtų galima naudoti žymą BEFORE.
Tarkime, duomenų bazės schema
Užklausa
mysql>>desc Studentas;>
SQL paleidiklis į problemos teiginį.
Virš SQL sakinio studentų duomenų bazėje bus sukurtas trigeris, kuriame kiekvieną kartą, kai įvedami dalykų pažymiai, prieš įterpiant šiuos duomenis į duomenų bazę, trigeris apskaičiuos šias dvi reikšmes ir įterps jas su įvestomis reikšmėmis. t.y.
Išvestis
Tokiu būdu duomenų bazėse galima sukurti ir vykdyti aktyviklius.
Trigerių pranašumas
Trigerių naudojimo SQL Server pranašumai yra šie:
- Duomenų bazės objekto taisykles nustato trigeriai, dėl kurių pakeitimai anuliuojami, jei jų nesilaikoma.
- Trigeris išnagrinės duomenis ir, jei reikia, atliks pakeitimus.
- Duomenų vientisumą galime užtikrinti naudodami trigerius.
- Duomenys patvirtinami naudojant aktyviklius prieš įterpiant arba atnaujinant.
- Trigeriai padeda mums tvarkyti įrašų žurnalą.
- Dėl to, kad jų nereikia kompiliuoti kiekvieną kartą, kai jie vykdomi, paleidikliai pagerina SQL užklausų našumą.
- Kliento kodas sumažinamas trigeriais, taupant laiką ir darbą.
- Trigerio priežiūra yra paprasta.
Trūkumas Trigeriai
Trigerių naudojimo SQL serveryje trūkumai yra šie:
- Tik aktyvikliai leidžia naudoti išplėstinius patvirtinimus.
- Naudojami automatiniai paleidikliai, o vartotojas nežino, kada jie vykdomi. Todėl sunku pašalinti problemas, kylančias duomenų bazės lygmenyje.
- Duomenų bazės serverio pridėtinės išlaidos gali padidėti dėl paleidimų.
- Viename CREATE TRIGGER sakinyje galime nurodyti tą patį paleidimo veiksmą keliems vartotojo veiksmams, pvz., INSERT ir UPDATE.
- Trigeriams kurti galima tik dabartinė duomenų bazė, tačiau jie vis tiek gali daryti nuorodas į objektus už duomenų bazės ribų.
Dažnai užduodami klausimai
1 klausimas: kas yra SQL paleidiklis?
Atsakymas:
SQL trigeris yra duomenų bazės objektas, susietas su lentele ir automatiškai vykdantis SQL sakinių rinkinį, kai toje lentelėje įvyksta konkretus įvykis. Trigeriai naudojami verslo taisyklėms vykdyti, duomenų vientisumui palaikyti ir tam tikriems veiksmams duomenų bazėje automatizuoti. Juos gali suaktyvinti įvairūs įvykiai, pvz., duomenų įterpimas, atnaujinimas ar ištrynimas lentelėje, ir jie leidžia atlikti papildomas operacijas pagal tuos įvykius.
bash jei kitaip
2 klausimas: kaip veikia SQL aktyvikliai?
Atsakymas:
SQL trigeriai apibrėžiami naudojant SQL sakinius ir yra susieti su konkrečia lentele. Kai toje lentelėje įvyksta apibrėžtas trigerio įvykis (pvz., INSERT, UPDATE, DELETE), susietas paleidimo kodas vykdomas automatiškai. Trigerio kodą gali sudaryti SQL teiginiai, kurie gali manipuliuoti duomenimis tose pačiose ar kitose lentelėse, vykdyti apribojimus ar atlikti kitus veiksmus. Trigeriai vykdomi operacijos apimtyje ir gali būti apibrėžti, kad jie būtų vykdomi prieš arba po suaktyvinimo įvykio.
3 klausimas. Kokie yra SQL aktyviklių naudojimo pranašumai?
Atsakymas:
SQL aktyviklių naudojimo pranašumai yra šie:
Duomenų vientisumas: aktyvikliai leidžia įgyvendinti sudėtingas verslo taisykles ir apribojimus duomenų bazės lygiu, užtikrinant, kad duomenys išliktų nuoseklūs ir tikslūs.
Automatizavimas: aktyvikliai gali automatizuoti pasikartojančias arba sudėtingas užduotis vykdydami iš anksto nustatytus veiksmus, kai tik įvyksta nurodytas įvykis. Tai sumažina rankinio įsikišimo poreikį ir padidina efektyvumą.
Audito takai: aktyvikliai gali būti naudojami duomenų pakeitimams stebėti, pvz., registruojant pakeitimus atskiroje audito lentelėje. Tai padeda tikrinti ir išlaikyti duomenų pakeitimų istoriją.
Duomenų patvirtinimas: aktyvikliai gali atlikti papildomas duomenų patvirtinimo patikras prieš juos įterpiant, atnaujinant arba ištrinant, užtikrinant, kad duomenų bazėje būtų saugomi tik galiojantys ir atitinkantys duomenys.