Teszt Inputok elérhetőek itt: http://www.inf.u-szeged.hu/~ihorvath/teaching/adatb_alapu/11/11_inputs.txt 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. create table rally (nev VARCHAR2(100), orszag VARCHAR2(3), feladat VARCHAR2(100), minosites NUMBER, partner VARCHAR2(100)); CREATE OR REPLACE TRIGGER tarsit BEFORE INSERT ON rally FOR EACH ROW BEGIN SELECT NEV INTO :NEW.PARTNER FROM rally WHERE partner='---' AND orszag=:NEW.orszag AND feladat!=:NEW.feladat AND ABS(minosites-:NEW.minosites)<=20 AND ROWNUM <= 1; UPDATE rally SET partner=:NEW.nev WHERE nev=:NEW.partner; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; / 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. create table résztvevők (bajnoksag VARCHAR2(100), csapatnev VARCHAR2(100)); create table meccsek (csapat1 VARCHAR2(100), csapat2 VARCHAR2(100)); create or replace trigger szervez before insert on résztvevők for each row DECLARE CURSOR sorba IS SELECT * FROM résztvevők WHERE bajnoksag=:NEW.bajnoksag; BEGIN FOR i IN sorba LOOP INSERT INTO meccsek VALUES (:NEW.csapatnev, i.csapatnev); END LOOP; END; / 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 '---'. Ez igazából a rally-s feladat, csak más szavakkal elmondva, annyi különbséggel, hogy most már a leghasonlóbb minősítésűt választjuk, ha több is megfelel. CREATE OR REPLACE TRIGGER tarsit BEFORE INSERT ON rally FOR EACH ROW DECLARE CURSOR kur IS SELECT * FROM rally WHERE partner='---' AND orszag=:NEW.orszag AND feladat!=:NEW.feladat AND ABS(minosites-:NEW.minosites)<=10 ORDER BY ABS(minosites-:NEW.minosites); BEGIN FOR i IN kur LOOP :NEW.partner:=i.nev; UPDATE rally SET partner=:NEW.nev WHERE nev=i.nev; EXIT; END LOOP; END; /