Triggerek Kalmár György.

Slides:



Advertisements
Hasonló előadás
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Advertisements

1 Informatikai Szakképzési Portál Adatbázis kezelés DCL – Adatvezérlő nyelv.
5. GYAKORLAT SQL CREATE TABLE, aktualizálás. S QL Structured Query Language A relációs adatbáziskezelés szabványos nyelve Nem algoritmikus, de beépíthető.
– SQL 2: Adatok kezelése – Tarcsi Ádám, január 30. Adatbázis gyakorlat.
– Adattáblák & adatok kezelése – Tarcsi Ádám január Adatbázis gyakorlat.
INSERT INTO Egy vagy több rekordot ad hozzá a táblához. Egyetlen rekordot hozzáfűző kifejezés: INSERT INTO cél_tábla (mező1,mező2,…) VALUES (érték1, érték2,
Triggerek II. ADATBÁZIS ALAPÚ RENDSZEREK.  Az Oracle kifinomult módon támogatja a sorszámozások generálását  Szekvencia: olyan adatbázis-objektum, amely.
Adatbázis alapú rendszerek
Készítette: Sárközi Anikó
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
DML. Új rekord beszúrása: INSERT INTO tábla (oszlop1,oszlop2,…) VALUES (érték1,érték2,…); Rekord módosítása: UPDATE tábla SET oszlop = érték WHERE feltétel;
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele a minimum elégséges érdemjegynek!
SQL DDL DATA DEFINITION LANGUAGE. Táblák létrehozása CREATE TABLE táblanév ( oszlopnév1 típus(méret) /DEFAULT érték/ /NOT NULL/, oszlopnév2 típus(méret)
Készítette: Tóth Ervin
SQL.
2006. október 30.Markó Tamás, PTE TTK1 Az Oracle SQL 9. Triggerek és tárolt eljárások. Kliens oldali programok.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
Adatbázis rendszerek II
5. gyakorlat Fleiner Rita.
Előadó: Horváth Olga Közfoglalkoztatás Szombathely városban.
A kártyanyomtatás fortélyai Csákvári Krisztián Kártya és címke gyártás
FOL függvényjelekkel Zsebibaba anyja A 2 harmadik hatványa a oszlopában az első blokk Ezek is nevek, de nem in- konstansok Azért, mert összetettek Predikátum:
PÁTY ÖNKORMÁNYZATA POLGÁRMESTERI HIVATALÁNAK SZERVEZETFEJLESZTÉSE E-KÖZIGAZGATÁSI ALAPISMERETEK AZ ELEKTRONIKUS ÜGYINTÉZÉS ÉS HATÓSÁGI SZOLGÁLTATÁS Bemutató.
Készítsünk DIP-et! Szatucsek Zoltán. OAIS DIP Dissemination Information Package (DIP): The Information Package, derived from one or more AIPs, received.
Körlevél. Körlevél alapok: Körlevél: sok címzettnek közel azonos tartalmú üzenet! (Pl: Felvételi értesítő) 3 részből áll: 1. Adatok /címlista 2. Levétörzs/szövegtörzs.
Történelmi bázisjogosultságok Szerletics Ákos Mezőgazdasági és Vidékfejlesztési Hivatal október 18.
Sapientia - Erdélyi Magyar Tudományegyetem (EMTE) Csíkszereda
Adatbázis alapú rendszerek
Fájlkezelés.
PL/SQL gyakorlás Kalmár György.
Adatbázis rendszerek II.
Valószínűségi kísérletek
Adatbázis normalizálás
Triggerek gyakorlás.
Innováció a közoktatásban
Idegen kulcsok Lokális és globális megszorítások Triggerek
Átváltás a számrendszerek között
Scilab programozás alapjai
Hogyan készítsünk Körlevelet?
Adatok importálása, rendezése és szűrése
Adatbázisok 8. előadás Tikk Domonkos.
Adatbázisok SQL.
Hogyan viszonyuljunk a médiaeszközök használatához a válságból való kilábalás után? Szuromi Péter - ZenithOptimedia.
Kovács Gergely Péter Egyszerű lekérdezések
Asztrológiai továbbképzés
PHP-SQL adatbáziskezelő parancsai
adatbázis alapú rendszerek
„B” komponens Az SZTE informatikai infrastruktúrájának fejlesztése
Animációk.
PL/SQL alapok Adatbázis-kezelés.
Adatbázis-kezelés (PL/SQL)
Körmendi Dániel MAS Meeting Scheduler.
A Hálózat és Az internet
Számítógépes Hálózatok
WE PROVIDE SOLUTIONS HS-Panel (SIP panel) házak,
Új pályainformációs eszközök - filmek
B M Java Programozás 9. Gy: Java alapok IT A N Adatkezelő 5.rész
I. HELYZETFELMÉRÉSI SZINT FOLYAMATA 3. FEJLESZTÉSI FÁZIS 10. előadás
„Vásárolj okosan” Mobil kiegészítők vásárlási szokásai
Idegen kulcsok Lokális és globális megszorítások Triggerek
SQL jogosultság-kezelés
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Előadás 08 Eljárások, függvények Hibakezelés (Kivétel kezelés)
LIA Alapítványi Ált. Isk. és Szki. Piliscsabai Tagintézménye
Táblázatkezelés 4. Képletek használata.
KONFERENCIA KAFFEE projekt Óvári Márta Köznevelési Főosztály
KONFERENCIA Adminisztráció Óvári Márta
Előadás másolata:

Triggerek Kalmár György

Trigger Eseményvezérelt tárolt program -> adott események hatására hívódik meg. Ezen események lehetnek: DELETE, INSERT, UPDATE CREATE, ALTER, DROP SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN

Triggerek felhasználása INSERT esetén nem bekért oszlopok automatikus feltöltése Integritás biztosítása Naplózás/logolás Tranzakciók helyességének biztosítása Stb.

Triggerek létrehozása CREATE [OR REPLACE ] TRIGGER trigger_név {BEFORE | AFTER | INSTEAD OF } {INSERT [OR] | UPDATE [OR] | DELETE} [OF oszlopnév] ON táblanév [REFERENCING OLD AS régi NEW AS új] [FOR EACH ROW] WHEN (feltétel) DECLARE --PL/SQL program BEGIN EXCEPTION END;

Triggerek létrehozása Az egyes elemekhez a leírás: https://www.inf.u-szeged.hu/~gnemeth/adatbgyak/Trigger.pdf

Példa 1.: Személy nevének módosításakor írjuk ki a régi és az új neveket. CREATE OR REPLACE TRIGGER nevmodositas BEFORE UPDATE ON SZEMELY FOR EACH ROW --csak ekkor érhetők el a régi és új értékek DECLARE BEGIN DBMS_OUTPUT.PUT_LINE('Regi nev: '|| :OLD.NEV); DBMS_OUTPUT.PUT_LINE('Uj nev: '|| :NEW.NEV); END;

Példa 2.: Az előző példát kiegészítve, új személy hozzáadásakor is írjuk ki a nevét. CREATE OR REPLACE TRIGGER nevmodositas BEFORE UPDATE OR INSERT ON SZEMELY FOR EACH ROW DECLARE BEGIN IF UPDATING THEN DBMS_OUTPUT.PUT_LINE('Regi nev: '|| :OLD.NEV); DBMS_OUTPUT.PUT_LINE('Uj nev: '|| :NEW.NEV); END IF; IF INSERTING THEN END; INSERT INTO SZEMELY VALUES('123456AS','Trigger Szeged',TO_DATE('1998-06-25','yyyy-MM- DD'),6720,'Magyarország');

Példa 3.: Ha olyan személyt szúrunk be, akinek a lakhelye még nem szerepel a Városok táblában, akkor szúrjuk be előbb a megfelelő várost. CREATE OR REPLACE TRIGGER ismeretlen_varos BEFORE UPDATE OR INSERT ON SZEMELY FOR EACH ROW DECLARE varos_cnt PLS_INTEGER:=0; BEGIN SELECT COUNT(*) INTO varos_cnt FROM VAROSOK WHERE IRSZ=:NEW.IRSZ; IF varos_cnt=0 THEN INSERT INTO VAROSOK VALUES(:NEW.IRSZ,:NEW.ORSZAG,'Ismeretlen',0); DBMS_OUTPUT.PUT_LINE('Automatikus beszúrás a város táblába! Városnév ismeretlen.'); END IF; END;

Példa 4.: Törölt személy kiírása. CREATE OR REPLACE TRIGGER torolt_szemely AFTER DELETE ON SZEMELY REFERENCING OLD AS regi NEW AS uj FOR EACH ROW DECLARE BEGIN DBMS_OUTPUT.PUT_LINE('Törölt személy: '||:regi.NEV); END; DELETE FROM SZEMELY WHERE NEV LIKE '%Trigger%';

Példa 5.: Hiba kiírása, ha nem megfelelő a bevitt adat hosszúsága CREATE OR REPLACE TRIGGER hibakiiras1 BEFORE INSERT OR UPDATE ON SZEMELY REFERENCING OLD AS regi NEW AS uj FOR EACH ROW WHEN (LENGTH(uj.SZIGSZ)!=8+1) DECLARE BEGIN DBMS_OUTPUT.PUT_LINE('A személyigazoványszám 8 karakterből kell, hogy álljon!'); END; DELETE FROM SZEMELY WHERE NEV LIKE '%Trigger%'; INSERT INTO SZEMELY VALUES('123456A','Trigger Gyor',TO_DATE('1998-06-25','yyyy- MM-DD'),5900,'Magyarország');

Feladat: Készítsünk egy városok beszúrását naplózni képes táblát: Beszúrt város neve Beszúrás dátuma Minden város beszúrásánál szúrjunk be egy megfelelő sort a fenti táblába TRIGGER segítségével.

Egyéb események Események: LOGON, LOGOFF, BEFORE CREATE, AFTER CREATE, BEFORE ALTER, AFTER ALTER, BEFORE DROP, AFTER DROP

Hiba generálása RAISE_APPLICATION_ERROR(-szám, ‚’Üzenet!’); Az adott tranzakció leáll és a megadott hiba keletkezik.

Belépés/kilépés naplózása Segédtábla: CREATE TABLE LOGON( NEV VARCHAR(20), DATUM DATE );

Naplózó trigger CREATE OR REPLACE TRIGGER On_Logon AFTER LOGON ON h_azonosito.Schema BEGIN INSERT INTO LOGON VALUES (USER || ' belepett', SYSDATE); END; Írdd meg a kilépés naplózásához szükséges triggert is! Teszteld a működést!

Példa 6.: Írjuk ki, ha tábla definiciója módosításra került. CREATE OR REPLACE TRIGGER vedett1 AFTER ALTER ON SCHEMA BEGIN DBMS_OUTPUT.PUT_LINE('Adattábla módosítása történt.'); END; ALTER TABLE SZEMELY MODIFY(NEV VARCHAR2(100));

Példa 7.: Akadályozzuk meg tábladefiniciók módosítását. CREATE OR REPLACE TRIGGER vedett1 BEFORE ALTER ON SCHEMA BEGIN RAISE_APPLICATION_ERROR(-20012,’Tiltott adattáblák módositása’); END; ALTER TABLE SZEMELY MODIFY(NEV VARCHAR2(100));

Feladat Akadályozd meg sémák törlését!