SQL DDL-2 (aktív elemek) triggerek

Hasonló dokumentumok
SQL DDL: Táblák, megszorítások (constraints), triggerek, nézettáblák

Adatbázis tartalmának módosítása

SQL DDL-1: táblák és megszorítások

Megszorítások. AB1_06A_Megszorítások - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

Az SQL adatbázisnyelv: DML

Bevezetés: az SQL-be

Tervezés: Egyed-kapcsolat modell és az SQL DDL: táblák, nézetek

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

Nézetek és indexek. AB1_06C_Nézetek_Indexek - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Adatbázisok elmélete 11. előadás

Adatbázis tartalmának módosítása. SQL DML utasítások

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

Relációs algebra 2.rész példák

Lekérdezések az SQL-ben 1.rész

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

Adatbázis tartalmának módosítása (DML), az adatbázis-kezelı rendszerek felépítése,

Nézetek és indexek. 8. fejezet Nézettáblák

ADATBÁZISOK: TAN7.EA témaköre SQL DDL, DML, DCL, Tranz.kez.

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

Adatbázis kezelés Delphiben. SQL lekérdezések

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

A triggerek tárolt eljárások, melyek elsüt események hatására indulnak. Ilyen elsüt esemény lehet egy táblára vonatkozó INSERT parancs DELETE parancs

Adatbázis Rendszerek II. 6. PLSQL Triggerek 32/1B IT MAN

6.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Bevezetés: Relációs adatmodell

Lekérdezések az SQL-ben 1.rész

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

B I T M A N B I v: T M A N

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

Adatbázis rendszerek SQL nyomkövetés

Tankönyv példák kidolgozása

Adatbázisok elmélete 9. előadás

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Adatbázisok elmélete 10. előadás

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

7. fejezet Kulcsok és idegen kulcsok

Adatbázisok* tulajdonságai

Lekérdezések az SQL-ben 2.rész

WHERE záradék (további lehetıségek) SQL specialitások, nem írhatók át relációs algebrába: LIKE. NULL értékek. Az ismeretlen (unknown) igazságérték

Relációs adatbázisok tervezése ---2

Feladatok A mai előadáson: Tankönyv -- Termékek feladatai:

Az adatbázisrendszerek világa

Bevezetés: Relációs adatmodell

Adatbázisok elmélete 9. előadás

5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

A trigger egy aktualizálási művelet esetén végrehajtandó programrészletet definiál. Alakja:

Triggerek. Olyan névvel ellátott adatbázisobjektumok, amelyek eseményorientált feldolgozást tesznek lehetővé

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) ABR 2( Adatbázisrendszerek 2) 1. Előadás: Celko Joe tippjei Codd törvényei.

SQL/PSM kurzorok rész

Információs rendszerek Adatbázis-kezelés

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

B I T M A N B I v: T M A N

Tranzakciókezelés PL/SQL-ben

Relációs algebra 1.rész alapok

Adatbázis I. 11. előadás. Kulcsok az SQL ben. Hivatkozásépségi megszorítások és idegen kulcsok.

LBRA6i integrált rendszer

ABR ( Adatbázisrendszerek) 2. Előadás : Műveletek a relációs modellben

Adatbázisok-1 előadás

Relációsémák létrehozása SQL nyelvben

A könyv tartalomjegyzéke

Több táblára vonatkozó lekérdezések Relációs algebra és SQL SELECT

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

Adattípusok. Max. 2GByte

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Adattípusok. Max. 2GByte

Adatbázis-kezelés. Harmadik előadás

Példák átírásokra: Relációs algebrai kifejezések, a kiértékelı fák átírása SQL lekérdezésekre

Adatbázisrendszerek Tervezése Közgazdászoknak Munkapéldány

Bevezetés: Relációs adatmodell

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Relációs algebrai lekérdezések átírása SQL SELECT-re (példák)

Java és web programozás

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

BEVEZETÉS Az objektum fogalma

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

Adatbázis rendszerek. Molnár Bence. Szerkesztette: Koppányi Zoltán

ADATBÁZISOK, 2018 ősz

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) október október 22. Adatbázisok 1 / 14

Adatbázis használat I. 5. gyakorlat

3.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

ADATBÁZISOK, 2017 ősz

Adatbázisok (relációs, objektum relációs, NoSQL) Adatbáziskezelő rendszerek Adatbázisok felépítése Adatbázisok tervezése

9.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

Relációs adatbázisok tervezése ---1

Adatbázis-kezelés, információs-rendszerek

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Adatbázisok. 2. gyakorlat SQL november november 12. Adatbázisok 1 / 31

Adatbázisok tavaszi félév Vizsgatételsor

Java és web programozás

Adatbázis rendszerek tervezése

Adabáziskezelés gyakorlat SQL

Átírás:

SQL DDL-2 (aktív elemek) triggerek Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 7.fej.: Megszorítások és triggerek 7.4. Önálló megszorítások 7.5. Triggerek AB1_07B_SQLDDL2trigger // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

7.fejezet: Megszorítások és triggerek Aktív elemek olyan kifejezés vagy utasítás, amit egyszer eltároltunk az adatbázisban és az azt várjuk tőle, hogy a megfelelő pillanatban lefusson (pl. adatok helyességének ellenőrzése) A megszorítás adatelemek közötti kapcsolat, amelyet az adatbázis-kezelő rendszernek fent kell tartania. Példa: kulcs megszorítások. Triggerek olyankor hajtódnak végre, amikor valamilyen megadott esemény történik, mint például sorok beszúrása egy táblába. AB1_07B_SQLDDL2trigger // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 2

Önálló megszorítások: Assertions SQL aktív elemek közül a leghatékonyabbak nincs hozzárendelve sem sorokhoz, sem azok komponenseihez, hanem táblákhoz kötődnek. Ezek is az adatbázissémához tartoznak a relációsémákhoz és nézetekhez hasonlóan. CREATE ASSERTION <név> CHECK (<feltétel>); A feltétel tetszőleges táblára és oszlopra hivatkozhat az adatbázissémából. AB1_07B_SQLDDL2trigger // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 3

Példa: önálló megszorítások A Felszolgál(söröző, sör, ár) táblában nem lehet olyan söröző, ahol a sörök átlagára 5 dollárnál több CREATE ASSERTION CsakOlcsó CHECK ( NOT EXISTS ( SELECT söröző FROM Felszolgál GROUP BY bár HAVING 5.00 < AVG(ár) )); (SELECT.. olyan sörözők, ahol a sörök átlagosan drágábbak 5 dollárnál) AB1_07B_SQLDDL2trigger // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 4

Példa: önálló megszorítások Az Sörvivó(név, cím, telefon) és Söröző(név, cím, engedély) táblákban nem lehet több bár, mint amennyi sörivó van. CREATE ASSERTION KevésBár CHECK ( (SELECT COUNT(*) FROM Sörözı) <= (SELECT COUNT(*) FROM Sörivó) ); AB1_07B_SQLDDL2trigger // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 5

Önálló megszorítások ellenırzése Alapvetően az adatbázis bármely módosítása előtt ellenőrizni kell. Egy okos rendszer felismeri, hogy mely változtatások, mely megszorításokat érinthetnek. Példa: a Sörök tábla változásai nincsenek hatással az iménti KevésBár megszorításra. Ugyanez igaz a Sörivók táblába történő beszúrásokra is. AB1_07B_SQLDDL2trigger // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 6

Tankönyv példája Önálló megszorítás, amelyik a stúdióelnökök gazdagságát írja elő CREATE ASSERTION GazdagElnök CHECK (NOT EXISTS (SELECT * FROM Stúdió, GyártásIrányító WHERE elnökazon = azonosító AND nettóbevétel < 10000000 ) ); AB1_07B_SQLDDL2trigger // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 7

Miért hasznosak a triggerek? Az önálló megszorításokkal (assertions) sok mindent le tudunk írni, az ellenőrzésük azonban gondot jelenthet. Az attribútumokra és sorokra vonatkozó megszorítások ellenőrzése egyszerűbb (tudjuk mikor történik), ám ezekkel nem tudunk minden kifejezni. A triggerek esetén a felhasználó mondja meg, hogy egy megszorítás mikor kerüljön ellenőrzésre. AB1_07B_SQLDDL2trigger // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 8

Esemény-Feltétel-Tevékenység szabályok A triggereket esetenként ECA szabályoknak (event-condition-action) esemény-feltételtevékenység szabályoknak is nevezik. Esemény: általában valamilyen módosítás a adatbázisban, INSERT, DELETE, UPDATE. Mikor?: BEFORE, AFTER, INSTEAD Mit?: OLD ROW, NEW ROW FOR EACH ROW OLD/NEW TABLE FOR EACH STATEMENT Feltétel : SQL igaz-hamis-ismeretlen feltétel. Tevékenység : SQL utasítás, BEGIN..END, PSM tárolt eljárás AB1_07B_SQLDDL2trigger // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 9

Elızetes példa egy triggerre Ahelyett, hogy visszautasítanánk a Felszolgál(söröző, sör, ár) táblába történő beszúrást az ismeretlen sörök esetén, a Sörök(név, gyártó) táblába is beszúrjuk a megfelelő sort a gyártónak NULL értéket adva. AB1_07B_SQLDDL2trigger // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 10

Példa: trigger definíció CREATE TRIGGER SörTrig AFTER INSERT ON Felszolgál REFERENCING NEW ROW AS ÚjSor FOR EACH ROW WHEN (ÚjSor.sör NOT IN (SELECT név FROM Sörök)) INSERT INTO Sörök(név) VALUES(ÚjSor.sör); Esemény Feltétel Tevékenység AB1_07B_SQLDDL2trigger // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 11

Triggerek --- 1 A triggerek, amelyeket szokás esemény-feltételtevékenység szabályoknak is nevezni, az eddigi megszorításoktól három dologban térnek el: A triggereket a rendszer csak akkor ellenőrzi, ha bizonyos események bekövetkeznek. A megengedett események általában egy adott relációra vonatkozó beszúrás, törlés, módosítás, vagy a tranzakció befejeződése. AB1_07B_SQLDDL2trigger // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 12

Triggerek --- 2 A kiváltó esemény azonnali megakadályozása helyett a trigger először egy feltételt vizsgál meg Ha a trigger feltétele teljesül, akkor a rendszer végrehajtja a triggerhez tartozó tevékenységet. Ez a művelet ezután megakadályozhatja a kiváltó esemény megtörténtét, vagy meg nem történtté teheti azt. AB1_07B_SQLDDL2trigger // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 13

Tankönyv példája (7.5. ábra) -- Nem engedi csökkenteni a gyártásirányítók nettó bevételét: CREATE TRIGGER NetBevétTrigger AFTER UPDATE OF nettóbevétel ON GyártásIrányító REFERENCING OLD ROW AS RégiSor, NEW ROW AS ÚjSor FOR EACH ROW WHEN(RégiSor.nettóBevétel > ÚjSor.nettóBevétel) UPDATE GyártásIrányító SET nettóbevétel = RégiSor.nettóBevétel WHERE azonosító = ÚjSor.azonosító; AB1_07B_SQLDDL2trigger // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 14

Tankönyv példája (7.6. ábra) -- Az átlagos nettó bevétel megszorítása: CREATE TRIGGER ÁtlagNetBevétTrigger AFTER UPDATE OF nettóbevétel ON GyártásIrányító REFERENCING OLD TABLE AS RégiAdat, NEW TABLE AS ÚjAdat FOR EACH STATEMENT WHEN(500000 > (SELECT AVG(nettóBevétel) FROM GyártásIrányító) DELETE FROM GyártásIrányító WHERE (név, cím, azonosító) IN ÚjAdat; INSERT INTO gyártásirányító (SELECT * FROM ) AB1_07B_SQLDDL2trigger // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 15