1. Adatbázis alapú rendszerek 2. ZH
Adottak a (gyakorlatokon már korábban megismert) DEPT és az EMP adattáblák, az alábbi mezőkkel:
DEPT (DEPTNO NUMBER(2), DNAME VARCHAR2(14), LOC VARCHAR2(13))
EMP (EMPNO NUMBER(4), ENAME VARCHAR2(10), JOB VARCHAR2(9),
MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2),
COMM NUMBER(7,2), DEPTNO NUMBER(2))
1. Feladat (2.5 pont)
a.) Írj olyan triggert, mely hibaküldés segítségével megakadályozza új elemző (EMP.JOB =
'ANALYST') felvitelét az EMP adattáblába, amennyiben az adott részlegen az elemzők átlagos fizetése
jelenleg eléri vagy meghaladja a 3000-et, és az új alkalmazott felvétele csak növelné ezt az átlagot! A
megjelenő hibaüzenet: "Eleget fizetünk az elemzőknek!" legyen.
b.) Miután kész vagy, tiltsd le az imént létrehozott triggert, majd véglegesen töröld is azt (egy-egy
paranccsal)!
2. Feladat (2.5 pont)
a.) Hozz létre segédtáblát és trigger(eke)t, melyek segítségével számolod, hogy új alkalmazottak (az EMP
adattáblába történő) felvitelekor közülük hány fő rendelkezik jutalékkal (EMP.COMM) és 2000-nél
magasabb fizetéssel (EMP.SAL) egyaránt!
b.) Szúrj be egyszerre több, tetszőleges rekordot az EMP táblába egyetlen Oracle PL/SQL utasítással!
3. Feladat (2.5 pont):
Írj triggert, amely megakadályozza a nyári hónapokban történő adatmanipulációkat az értékesítési
("SALES") részleg adataiban a DEPT táblában. A hibaüzenetekben szerepeljen az is, hogy épp milyen
műveletet kíséreltek meg végrehajtani. (A tábla aktuális soránál az aktualizálás előtti állapotra a "regi", az
aktualizálás utáni állapotra pedig az "uj" kulcsszóval hivatkozz!)
4. Feladat (2.5 pont):
Írj triggert, mely új alkalmazott felvétele esetén megpróbál neki egy, az adatbázisban szereplő
alkalmazottak közül automatikusan egy főnököt keresni! Ez az alkalmazott tartozó rekord MGR oszlopának
kitöltésével – oda a főnök kódjának (EMP.EMPNO) felvitelével – történjen, a következő (meglehetősen
primitív) szempontok figyelembe vételével:
a.) csak az azonos részlegből kaphat főnököt az illető,
b.) a potenciális főnöknek legyen jutaléka
(itt kezelni kell azt az esetet is, amikor definiálatlan / nem szerepel érték)
c.) a főnök fizetése legalább 1000-el magasabb legyen a beosztotténál.
(Természetesen a feltételeknek megfelelő jelöltek közül egy tetszőlegesen választott hozzárendelhető az
alkalmazotthoz, akár az első találat is.)