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

Hasonló dokumentumok
Adatbázisrendszerek (ABR)

SQL DDL-2 (aktív elemek) triggerek

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Marosvásárhely. ABR ( Adatbázisrendszerek) 12. Előadás:

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

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

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

Bevezetés: az SQL-be

Az SQL adatbázisnyelv: DML

Adatbázis rendszerek. dr. Siki Zoltán

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

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

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

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

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

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

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

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

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

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-lekérdezés. Az SQL nyelv. Makány György

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

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

Adatbázisok* tulajdonságai

Adatbázis rendszerek SQL nyomkövetés

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

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

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

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

Adatbázis, adatbázis-kezelő

Tranzakciókezelés PL/SQL-ben

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

Az SQL nyelv Structured Query Language (Struktúrált lekérdező nyelv)

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

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

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

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

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

Adatbázis Rendszerek II. 8. Gyakorló környezet

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

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

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

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

SQL parancsok feldolgozása

Java és web programozás

Adatbázis Rendszerek II. 2. Gyakorló környezet

A szürke háttérrel jelölt fejezet/alfejezet szövege a CD-mellékleten található. A CD-melléklet használata. 1. Elméleti áttekintés 1

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

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

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

Adatbázismodellek. 1. ábra Hierarchikus modell

Java és web programozás

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

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

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

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

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

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

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. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

LBRA6i integrált rendszer

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Programozás. Adatbázis-kezelés (alapok) Fodor Attila

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

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

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

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

Adattípusok. Max. 2GByte

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Készítette: Szabóné Nacsa Rozália

Adattípusok. Max. 2GByte

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

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

Adatbázis Rendszerek I. 9. SQL alapok (DDL esettanulmány)

Adatbázis használat I. 5. gyakorlat

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

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

ADATBÁZIS RENDSZEREK I BEADANDÓ

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

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

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

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

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

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Adatmodellezés. 1. Fogalmi modell

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

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

Adatbázis rendszerek tervezése

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

BEVEZETÉS Az objektum fogalma

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

Adatbázis. AMP! (Apache + MySql + PHP) XAMPP, LAMP, MAMP, WAMP et cetera

Adatbázisok webalkalmazásokban

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

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


Oracle Spatial. Térbeli adatot tartalmazó tábla: Geometry table Legalább 2 oszlopa van: Elsődleges kulcs, SDO_GEOMETRY típusú oszlop.

Az indexelés újdonságai Oracle Database 12c R1 és 12c R2

SQL bevezetés. Select-From-Where záradékok Több relációt tartalmazó lekérdezések Alkérdések

Adatbázisban tárolt kollekciók

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

Átírás:

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

Celko Joe programozási tippjei 1. A lekérdezést kezdjük mindíg a SELECT utasítással és írjuk utána, mit szeretnénk látni az eredményben. Ezzel megvan a cél, és a felhasználónak is tudunk mutatni valamit 2. Minden táblát, amelynek oszlopai a SELECT utasítás után szerepelnek, írjuk a FROM után 3. A felesleges táblákat később eltávolíthatjuk. Minden a WHERE záradékban fog zajlani 4. Egyedek helyett fogalmazzuk meg a problémát halmazokkal. Erre a legjobb példa a fák ábrázolása egymásba ágyazott halmazokkal, csúcsok és élek helyett 2

Celko Joe programozási tippjei 5. Sokszor segít, ha felcseréljük a szavak sorrendjét a kérdésben. Ahelyett, hogy szükségünk van minden sárga tengeralattjáróra azt mondjuk, hogy sárga a színe azon teneralattjáróknak, melyre szükségünk van. 6. Néha a kérdés tagadása segít. Ahelyett, hogy szükségünk van azokra az autókra, melyek teljesítik az összes feltételt, mondhatjuk azt, hogy nem kellenek azok az autók, amelyek legalább egy feltételnek nem felelnek meg. Gyakran egyszerűbb megtalálni azt,amit nem akarunk, mint azt, amit akarunk. Ez a módszer akkor hasznos, amikor a NOT EXIST predikátumot használjuk. De figyelni kell a NULL értékekre és az ÜRES halmazokra 3

Celko Joe programozási tippjei 7. Egymásba ágyazás segítségével sok mindent elvégezhetünk egyszerre. Különösen hasznos a CASE eszközök használata összesítő függvényekkel. 8. Figyeljünk oda a logikai kifejezésekre. Az eljárásközpontú nyelvekben több lépcsőben is kiszűrhetjük a megfelelő adatokat. Az SQL-ben mindent egy kifejezésben kell leírni, ami nagyon bonyolult is lehet. 4

Celko Joe programozási tippjei 9. Figyeljünk oda, hogy a NULL értékek az UNKNOW igazságértékeket eredményezzenek. Mindíg ellenőrizzük, hogy mi történik a lekérdezésben, ha valahol NULL fordul elő. 10. Ne felekezzünk meg arról, hogy a táblák üresek is lehetnek. Próbáljunk olyan tesztadatokat létrehozni, amelyek lefedik az összes lehetséges esetet. Ezért jó egy döntési-tábla előkészítő program használata, ami biztosan megállapítja, hogy az adott kifejezés helyes és teljes-e. 5

Codd 12 szabálya Codd 12 szabálya egy tizenhárom szabályból álló készlet (zérótól tizenketőig számozva), amelyet Edgar F. Codd javasolt, a relációs adatbázis modell atyja, amely arra volt tervezve, hogy meghatározza milyen feltételeket kell teljesítsen egy adatbázis kezelő rendszer azért hogy relációs adatbázis kezelő rendszernek nevezhessék. Tréfásan Codd tizenkét parancsolata -nak is nevezik. 6

Codd ezen szabályok elkészítését arra is használta, hogy megkadályozza az ő adatbázis rendszerekről megalkotott álmainak felhígítását, amint a korai 1980-as adatbázis szállítók összekúszáltak hogy újracsomagolják a létező temékeiket relációs burokkal. A 12-es szabály volt kiváltképpen arra kitalálva hogy számbavegye az ilyen helyezkedéseket. A szabályok annyira szigorúak hogy az összes népszerű, úgynevezett relációs adatbázisredszerek elégtelen jegyet kapnak több feltétel esetében. 7

0. Szabály A rendszer minősítésének tartalmaznia kell mindhárom fogalmat: relációs, adatbázis és menedzsment rendszer. Hogy egy rendszer minősítése adatbázis kezelő rendszer legyen, a rendszer (kizárólag) relációs képességeket kihasználva menedzselnie kell az adatbázist. Kivétel: Használatunk ELJÁRÁSOKAT is 8

1. Szabály Az információs szabály Minden információ ábrázolása az adatbázisban csak egyféle képpen történik, mégpedig táblák sorai- és oszlopai találkozásánál levő értékekkel. Az SQL megfelel ennek a szabálynak 9

2. Szabály: A garantált hozzáférés szabálya Minden adat elérhető kell legyen. Ez a szabály alapvető az elsődleges kulcs újrafogalmazásában. Kimondja, hogy minden skalár egység az adatázisban logikailag megcímezhető kell legyen, megcímezvén a bennfoglaló táblát, a tartalmazó oszlop nevét és a tartalmazó sor elsődleges kulcsának az értékét. Nem kötelező, hogy egy táblán legyen bármilyen kulcsa. 10

3. Szabály: A null érték szisztematikus kezelése Az ABRnek meg kell engednie minden mezőnek, hogy null értékű legyen (vagy üres). Kifejezetten kell támogassa a hiányzó és alkalmazhatatlan információ -t, amelyik szisztematikus, külünbözik minden szabályos értéktől (például, különbözik zérótól és minden más számtól, szám értékek esetében), és független az adattípustól. Magába kell foglalja azt is, hogy egy ilyen reprezentációt szisztematikusan kell kezelnie az ABR-nek. Az SQL a NULL értéket használja mindkét esetre 11

4. Szabály: A relációs modellre épülő aktív online katalógus A rendszernek támogatnia kell egy online, közvetlen, relációs katalógust, amely elérhető a jogosult felhasználók számára egy lekérdező nyelv segítségével. A felhasználóknak elérhető kell legyen az adatbázis struktúrája (katalógusa) ugyanazon lekérdező nyelv használata segítségével, mint amivel elérik az adatbázis adatait. Az SQL támogatja ezen katalógus létezését 12

5. Szabály: Az átfogó nyelv szabálya A rendszernek biztosítania kell legalább egy relációs nyelvet, amelyik a) Lineáris szintaxissal rendelkezik b) Használható mind interaktív módon, mind pedig program-alkalmazáson keresztül c) Támogatja az adat-definíciós operációkat (beleértve a nézet definíciókat), adatmanipulációs operációkat (módosítás és visszakeresés), biztonsági- és integritási megszorításokat, és tranzakció-menedzsmenti operációkat (kezdet, elkövetés (commit) és visszaforgatás (rollback)) 13

6. Szabály: A nézetfrissítési szabály Mindazon a nézetek, amelyek elméletileg frissíthetőek, azok frissíthetőek kell legyenek gyakorlatilag is. Az SQL gyenge ezen a téren, mert a nézettáblák frissítése nagyon nehéz probléma Csak a nagyon biztonságos esetek kerülnek bele 14

7. Szabály: Magasszintű beszúrás, módosítás és törlés A rendszer kell támogassa a készlet szintű beszúrás-, módosítás- és törlés operátorokat. Ez azt jelenti, hogy adathalmazt lehet visszakeresni egy relációs adatbázisból, amelyik több sort/táblát tartalmaznak. Ez a szabály kimondja, hogy beszúrás, módosítás és törlés operációk alkalmazhatók kell legyenek minden visszakereshető sorhalmazra, mintsem egy sorra egy táblából. Az SQL támogatja ezeket 15

8. Szabály: Fizikai adatfüggetlenség A fizikai síkon történő változások (hogyan tároljuk az adatokat, mint tömbben vagy csatolt listákban) ne legyen kihatással azon akalmazásokra, amelyek az adatstruktúrán alapulnak. Az SQL jobb a programozási nyelvek többségénél 16

9. Szabály: Logikai adatfüggetlenség A logikai szintű változásoknak (táblák, oszlopok, sorok stb.) nem szabad hatással lennie struktúrán alapuló alkalmazásokra. Logikai adat függetlenséget nehezebb megvalósítani, mint a fizikai adafüggetlenséget. Az SQL nagyon jó ezen a téren 17

10. Szabály: Épségi függetlenség Az épségi megszorítások alkalmazás függetlenek kel legyenek és a katalógus kell tartalmazza őket. Lehetőséget kell biztosítani annak, hogy ezen megszorítások, amikor szükségszerű, változtathatóak legyenek, anélkül, hogy befolyásolná a létező alkalmazásokat. 18

11. Szabály: Az osztottság függetlensége Az adatbázis egyes részeinek különböző helyeken történő tárolása láthatatlan kell legyen az adatbázis felhasználójának. A létező alkalmazások tovább kell működjenek: 1. Amikor egy osztott változata az ABR-nek első alkalommal bevezetésre kerül 2. Amikor a létező osztott adat újraosztásra kerül a rendszeren belül. Ezen támogatások gyerekcipőben vannak. (NoSQL) 19

12. Szabály: Az alacsony szintű hozzáférés szabálya Ha a rendszer biztosít egy alacsony szintű kapcsolatot, ez a kapcsolat nem használható a rendszer aláásására, például, hogy áteresszen egy relációs biztonsági résen vagy megsértsen egy integritási megszorítást. Az SQL-92 jó ebből a szempontból 20

Triggerek az SQL-ben (Trigger elsüt, kivált) Eddig az SQL 2 szabvány szerinti megszorításokat tanulmányoztuk. Egy új sor beszúrásánál megváltozhat az attribútum értéke és CHECK feltételt akkor ellenőrizzük amikor ez megtörténik. Ez már az SQL 3-ban van. A megszorítások megvalósítása magába foglalja az ellenőrzések kiváltását, elsütését. 21

Tiggerek és megszorítások (három különbség van köztük) A triggereket csak akkor ellenőrzi a rendszer ha valamilyen esemény bekövetkezik Először a feltételt vizsgálja meg, ha nem teljesül, semmi sem történik Ha a feltétel teljesül akkor a művelet végrehajtandó, ez a művelet megakadályozhatja a kiváltó esemény létrejöttét. 22

SQL 3 Triggerek: A művelet végrehajtható a kiváltó esemény előtt, után vagy helyette A művelet vonatkozhat a műveletet kiváltó esemény által törölt, beszúrt vagy módosított sorok régi vagy új értékeire is Ha az esemény modosítás akkor megadhatunk egy oszlopot vagy egy halmazt amelyre az esemény vonatkozik Egy WHEN zárójelben, megadhatunk egy feltételt is ami feltételezi a művelet vegrehajtását 23

Önálló megszorítások SQL 3-ban Ket bővítése van az SQL-2 hez képest: A programozó által megadott esemény váltja ki Egy sorra is hivatkozhat. Példa: A felhasználó gondoskodik a következőkről Összegyűjti az eseményeket ami a megszorítás ellenőrzését váltja ki. Viseli a kockázatot ha az adatbázis következetlen állapotba kerül. 24

1) CREATE TRIGGER NetBevetelTrigger 2) AFTER UPDATE OF nettobev ON Gyartasiranyito 3) REFERENCING 4) OLD AS RegiSor, 5) NEW AS UjSor 6) WHEN(RegiSor.nettoBev>UjSor.nettoBev) 7) UPDATE Gyartasiranyito 8) SET nettobev=regisor.nettobev 9) WHERE azonosito=ujsor.azonosito 10) FOR EACH ROW 25

Trigger szintaxis a MySQL-ben CREATE TABLE szamla (szamlaszam INT PRIMARY KEY, egyenleg DECIMAL(10,2)); CREATE TRIGGER ins_sum BEFORE INSERT ON szamla FOR EACH ROW SET @sum = @sum + NEW.egyenleg; SET @sum=0; INSERT INTO szamla VALUES(137,14.98),(141,1937.50),(97,-100.00); SELECT @sum AS Összesen bevitt egyenleg'; Eredmény 1 oszlop, 1 sor, érték: 1852,48 26

Triggerek megszorításai (MySQL) A trigger nevek ugyanabban a névtérben léteznek, ami azt jelenti, hogy minden triggernek különböző neve kell legyen egy adatbázis sémán belül. Más más sémában levő triggereknek lehet ugyanaz a nevük. Nem lehet 2 különböző nevű trigger, amelyik ugyanazon feltételek mellett ugyanazon táblára vonatkozzék, vagyis ugyanaz legyen az aktivációs ideje és ugyanazon esemény váltsa ki. 27

Create trigger (MySQL) CREATE [DEFINER = { user CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt A trigger egy megnevezett adatbázis objektum amelyik egy táblához kapcsolódik és aktiválódik (elsül) amikor egy egyéni esemény történik a táblával. A trigger egy táblához fog kapcsolódni, amelyik neve a tbl_name, és amelyik egy permanens táblát kell jelentsen. Nem lehet a triggert egy nézethez vagy egy IDEIGLENES (TEMPORARY) táblához kötni. 28

trigger_time megadja, hogy az esemény bekövetkezte Előtt (BEFORE), vagy Után (AFTER) legyen végrehajtva a trigger_stmt trigger_event lehet a következő: 1.INSERT INSERT LOAD DATA REPLACE 2.UPDATE 3.DELETE DELETE REPLACE 29

Többszörös utasítás esetén A trigger_stmt-t BEGIN és END közé kell tenni. CREATE TABLE test1(a1 INT); CREATE TABLE test2(a2 INT); CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY); CREATE TABLE test4( a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b4 INT DEFAULT 0); delimiter CREATE TRIGGER testref BEFORE INSERT ON test1 FOR EACH ROW BEGIN INSERT INTO test2 SET a2 = NEW.a1; DELETE FROM test3 WHERE a3 = NEW.a1; UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1; END; delimiter ; 30

INSERT INTO test3 (a3) VALUES (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL), (NULL); INSERT INTO test4 (a4) VALUES (0), (0), (0), (0), (0), (0), (0), (0), (0), (0); INSERT INTO test1 VALUES (1), (3), (1), (7), (1), (8), (4), (4); Select * from test1 a1=(1,3,1,7,1,8,4,4) Select * from test3 Select * from test2 a2=(1,3,1,7,1,8,4,4) a3=(2,5,6,9,10) Select * from test4 a4=(1,2,3,4,5,6,7,8,9,10) b4=(3,0,1,2,0,0,1,1,0,0) A test3-ból kitörli az test1-ben levő értékeket, a test4-ben megszámolja, hogy melyik érték hányszor szerepel a test1-ben 31

Vonatkoztathatunk a táblában lévő oszlopokra (a tábla, amelyik a triggerrel van asszociálva), ha használjuk az OLD és a NEW álneveket. OLD.col_name vonatkozik egy létező sorra, mielőtt az módosult vagy törlődött volna. NEW.col_name vonatkozik arra az oszlopára az új sornak amelyik be lesz szúrva vagy az oszlopára annak a sornak, amelyik már meg volt változtatva. Működő CREATE TRIGGER sdata_insert BEFORE INSERT ON sometable FOR EACH ROW BEGIN SET NEW.guid = UUID(); END; Nem működő CREATE TRIGGER sdata_insert AFTER INSERT ON sometable FOR EACH ROW BEGIN SET NEW.guid = UUID(); END; 32

Zölddel írva a számla általános adatait láthatjuk Pirossal a számlasorok attribútumai vannak Kékkel írva láthatóak a számlasorok. 33

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Marosvásárhely összeg számlaszám ÁFA Sorszám határidő Számlák sorai Számlasorok Dátum számlája egységár darabszám azonosító Ügyfelek termékid terméke név név bank bszámla adószám bejegyzés Termékek mértékegység 34

N 1 KISZAMLA.OSSZEG= SZAMLASOR. EGYSEGAR* SZAMLASOR. MENNYISEG, ahol N a számlán levő sorok száma. 35

36

INSERT trigger delimiter // CREATE TRIGGER sz_sor_insert AFTER INSERT ON szamlasor FOR EACH ROW BEGIN UPDATE kiszamla SET kiszamla.osszeg=kiszamla.osszeg+new.egysega R*NEW.MENNYISEG WHERE kiszamla.szamlaszam=new.szamlaszam; END;// delimiter ; 37

DELETE trigger delimiter // CREATE TRIGGER sz_sor_delete BEFORE DELETE ON szamlasor FOR EACH ROW BEGIN UPDATE kiszamla SET kiszamla.osszeg=kiszamla.osszeg- OLD.EGYSEGAR*OLD.MENNYISEG WHERE kiszamla.szamlaszam=old.szamlaszam; END;// delimiter ; 38

UPDATE trigger delimiter // CREATE TRIGGER sz_sor_update BEFORE UPDATE ON szamlasor FOR EACH ROW BEGIN UPDATE kiszamla SET kiszamla.osszeg=kiszamla.osszeg+new.egysega R*NEW.MENNYISEG- OLD.EGYSEGAR*OLD.MENNYISEG WHERE kiszamla.szamlaszam=new.szamlaszam; END;// delimiter ; 39

Bibliográfia Celko, Joe; SQL felsőfokon, Kiskapu, Budapest, 2002, xxiii, 19-21 oldal http://en.wikipedia.org/wiki/codd's_12_rule s http://dev.mysql.com/doc/refman/5.1/en/sto red-programs-views.html 40