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.

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

Tananyag: konzultáció
2012. tavaszi félév Véső Tamás. A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges,
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.
© Kozsik Tamás Adatbáziskezelés •Relációs adatbáziskezelők •Noha a Java objektum-elvű, egyelőre nem az objektum-elvű adatbáziskezelőket támogatja.
Adatbázis rendszerek I
Anyagadatbank c. tárgy gyakorlat
Adatbázisok SQL. TARTALOM Szijártó M.2 Témakörök  Az SQL tulajdonságai  A műveletek fajtái  Objektum-műveletek  Lekérdezések Tulajdonságok és műveletek.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Adatbázisok gyakorlat 8. gyakorlat SQL alapok.
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
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.
1 Informatikai Szakképzési Portál Adatbázis kezelés DCL – Adatvezérlő nyelv.
Delphi programozás alapjai
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.
2012. március 6. Rózsa Győző Interaktív környezet március Rózsa Győző
Többtáblás lekérdezések, allekérdezések Rózsa Győző
PL/SQL I. ADATBÁZIS ALAPÚ RENDSZEREK.  PL/SQL = Procedural Language/SQL  utasítást ; zárja le  PL/SQL blokk lezárása: /  kis- és nagybetű egyenértékű.
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,
Adatbázis alapú rendszerek
Adatbázis rendszerek II.
Készítette: Sárközi Anikó
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 5. Nézettáblák létrehozása, módosítása és törlése.
SQL92 lehetőségek KL A tábla B tábla C view adatok VIEW működése utasítás: SELECT.. FROM A,B … SELECT.. FROM C Az adatok a hivatkozáskor állítódnak elő.
ADATBÁZISOK
ADATBÁZISOK
ADATBÁZISOK
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
ADATBÁZIS HASZNÁLAT I. 2. gyakorlat. Figyelem!!! A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem.
SQL, adatdefiníció, adatok megváltoztatása, megszorítások
Nézettáblák létrehozása, módosítása és törlése
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;
DDL – Adatdefiníciós nyelv
Adatbázis adminisztrátori ismeretek
2012. tavaszi félév Véső Tamás Véső Tamás OE­NIK / 18.
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.
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.
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!
Adatbázis használat I. 2. gyakorlat.
Felhasználók és jogosultságok
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
Az SQL nyelv. SQL Az SQL utasításait két fő csoportba szokták sorolni: DDL (= Data Definition Language): adatstuktúra definiáló utasítások. DML (= Data.
SQL.
2006. október 30.Markó Tamás, PTE TTK1 Az Oracle SQL 9. Triggerek és tárolt eljárások. Kliens oldali programok.
ORACLE ORDBMS adminisztrációs feladatok 3. rész dr. Kovács László 2004.
1 Sramó András Adatbázis-technológia V. előadás Adatbázis-technológia 5. előadás Az SQL.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
Tarcsi Ádám, Adatbázis gyakorlat – Adattáblák – Tarcsi Ádám, január.
Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai
Adatbázis rendszerek II
Ma az un. Relációs adatmodelleket használjuk.
Szerver és kliens gép közötti kommunikáció Adattárolási modellek  OLTP: OnLine Transaction Processing az MSSQL Szervert egy időben egyszerre sok felhasználó.
5. gyakorlat Fleiner Rita.
Webprogramozó tanfolyam
2. AB gyakorlat Egytáblás csoportosító lekérdezések.
Adatbázis rendszerek I
1 Verseny 2000 gyakorlat SQL 2000 Server Portál adatbázis létrehozása.
Sapientia - Erdélyi Magyar Tudományegyetem (EMTE) Csíkszereda
Adatbázis alapú rendszerek
Triggerek gyakorlás.
Adatbázisok 8. előadás Tikk Domonkos.
Adatbázisok SQL.
Triggerek Kalmár György.
adatbázis alapú rendszerek
Logisztikai projekt - gyakorlat Adatbázis-elmélet
Előadás másolata:

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 meghatározott módon számok sorozatát generálja CREATE SEQUENCE sequence_name MINVALUE value MAXVALUE value START WITH value INCREMENT BY value CACHE value;  Ahhoz, hogy egy, a MySQL AUTO_INCREMENT megszorítású elsődleges kulcsához hasonló viselkedésű oszlopot kapjunk, felveendő egy szekvencia és egy trigger ORACLE “AUTO INCREMENT” ELSŐDLEGES KULCS

 Egy egyszerű megoldás, a kulcs mindig eggyel növekszik: CREATE SEQUENCE emp_seq START WITH 1 INCREMENT BY 1 NOMAXVALUE; CREATE OR REPLACE TRIGGER emp_auto_increment_pk BEFORE INSERT ON emp FOR EACH ROW BEGIN :NEW.empno := emp_seq.NEXTVAL; END; / ORACLE “AUTO INCREMENT” ELSŐDLEGES KULCS

 Az Oracle a különböző események (pl. bejelentkezés, leállítás, stb.) bekövetkeztét jelzi  Az események két csoportja:  rendszeresemények – az egész adatbázist érintő történések  STARTUP  SHUTDOWN  SERVERERROR  kliens események – a felhasználó által végzett műveletek (pl. belépés, DDL műveletek, stb.)  LOGON, LOGOFF, BEFORE CREATE, AFTER CREATE  BEFORE ALTER, AFTER ALTER, BEFORE DROP, AFTER DROP  definiálhatunk triggereket ezen eseményekre ORACLE RENDSZERESEMÉNYEK

 Írjunk két triggert, amelyek egy adott felhasználó belépése és kilépése esetén aktivizálódnak. A triggerek készítsenek a belépésről illetve kilépésről egy bejegyzést egy naplózó táblába, amely definíciója a következő: CREATE TABLE LOGON( nev VARCHAR(20), datum DATE );  Próbáljuk ki a triggereket. 1. FELADAT

CREATE OR REPLACE TRIGGER On_Logon AFTER LOGON ON felhasználónév.Schema BEGIN INSERT INTO LOGON VALUES (USER || ' belepett', SYSDATE); END; / CREATE OR REPLACE TRIGGER On_Logoff BEFORE LOGOFF ON felhasználónév.Schema BEGIN INSERT INTO LOGON VALUES (USER || ' kilepett', SYSDATE); END; / select nev, to_char(datum,'DD/MM/YYYY HH24:MI:SS') as "DATUM" from logon; 1. FELADAT / II.

 Hozzunk létre egy olyan utasításszintű BEFORE triggert, amely megakadályozza amunkaidőn kívüli adatmanipulációkat az emp táblán!  Próbáljunk meg beszúrni egy sort! CREATE OR REPLACE TRIGGER NeNyuljHozza BEFORE DELETE OR INSERT OR UPDATE ON emp BEGIN IF TO_CHAR(SYSDATE, 'HH24:MI') > '14:00' THEN RAISE_APPLICATION_ERROR(-20111, 'Csak munkaidoben szabad az adatbazis!'); END IF; END; insert into emp values (1234, 'kiss', 'clerk', 1111, '99-MAJ-20', 1200, NULL, 10); 2. FELADAT

 Oldjuk meg az előző feladatot oly módon, hogy azt is kiíratjuk, milyen műveletet kíséreltek meg végrehajtani munkaidőn kívül. CREATE OR REPLACE TRIGGER NeNyuljHozza BEFORE DELETE OR INSERT OR UPDATE ON emp BEGIN IF TO_CHAR(SYSDATE, 'HH24:MI') > '14:00’ THEN IF DELETING THEN RAISE_APPLICATION_ERROR(-20211, 'Csak munkaidoben szabad adatot torolni!'); ELSIF INSERTING THEN RAISE_APPLICATION_ERROR(-20212, 'Csak munkaidoben szabad adatot bevinni!'); ELSE RAISE_APPLICATION_ERROR(-20213, 'Csak munkaidoben szabad adatot modositani!'); END IF; END; 3. FELADAT DELETE FROM emp WHERE UPPER(ename) = UPPER('Smith');

 Írjunk triggert, mely megakadályozza az elnökre (president) vonatkozó törlő, beszúró ésadatmódosító utasítások működését! CREATE OR REPLACE TRIGGER KiveveAzElnok BEFORE DELETE OR INSERT OR UPDATE ON emp FOR EACH ROW WHEN (UPPER(OLD.job) = 'PRESIDENT' OR UPPER(NEW.job) = 'PRESIDENT') BEGIN IF DELETING THEN RAISE_APPLICATION_ERROR(-20001, 'Az elnokot nem lehet torolni!'); ELSIF INSERTING THEN RAISE_APPLICATION_ERROR(-20002, 'Elnokot nem lehet beszurni!'); ELSIF UPDATING THEN RAISE_APPLICATION_ERROR(-20003, 'Elnok adatok nem modosithatok!'); END IF; END; 4. FELADAT UPDATE emp SET sal = sal WHERE deptno = 10; insert into emp values (5678, 'kiss', 'president', NULL, SYSDATE, 6000, NULL, 10)

2.Hozzuk létre a RAPID RALLY autóversenyre benevezett versenyzők tábláját. Készítsünk triggert, amely minden beillesztett versenyzőhöz megkísérel alábbi feltételeknek megfelelő partnert keresni: 1) a partnerek nemzetisége egyezzen meg, 2) a partnerek minősítése legyen 20 ponton belül, 3) a feladatkörök illeszkedjenek. Tötse fel a partner oszlopokat(!) a feltételeknek megfelelően. 3.Hozzuk létre a ALVÓ LAJHÁR Sport Egyesület által szervezett bajnokság adatbázisát. Készítsünk triggert amelyik minden új résztvevő csapathoz legenerálja a lejátszandó mérkőzéseket a mérkőzések táblában. Minden csapat egy mérkőzést játszik az adott bajnokság többi csapatával. TOVÁBBI FELADATOK

4.Partnerek(név, nem, életkor, város, partner_neve)  Új sor beszúrása esetén keressünk automatikusan partnert:  Különböző neműek  Max. 10 év korkülönbséggel  Ugyanabban a városban lakjanak  Egy emberhez egy párt társítunk, ha több is megfelelne, akkor a legkisebb korkülönbségűt válasszuk.  Beszúráskor partner_neve legyen '---'. TOVÁBBI FELADATOK