Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE TRIGGER InsertGareGiocate
- INSTEAD OF INSERT ON NESTED TABLE GareGiocate OF Giocatori_V
- REFERENCING PARENT AS GiocatoriParent
- FOR EACH ROW
- DECLARE
- n INTEGER;
- dataNow DATE;
- dataGara DATE;
- ultimaBuca NUMBER(2);
- bucain NUMBER(2);
- BEGIN
- --Non si possono inserire dati delle buche di gare future.
- SELECT SYSDATE INTO dataNow FROM DUAL;
- SELECT g.Data INTO dataGara FROM Gare_V g WHERE g.CodG = (DEREF(:NEW.gara)).CodG;
- IF dataGara > dataNow THEN
- raise_application_error (-20001, 'Impossibile inserire i dati relativi alle buche di una gara futura.
- Data odierna: ' || dataNow || '. Data inserita: ' || dataGara);
- ELSE
- --La buca inserita deve essere uguale all'ultima buca inserita +1
- SELECT (CAST(MAX(gg.buca) AS NUMBER(2))+1) INTO ultimaBuca
- FROM TABLE(SELECT g.GareGiocate FROM Giocatori g WHERE g.CodG = :GiocatoriParent.CodG) gg
- WHERE (DEREF(gg.gara)).CodG = (DEREF(:NEW.Gara)).CodG;
- SELECT CAST(:NEW.Buca AS NUMBER(2)) INTO Bucain FROM DUAL;
- IF ultimaBuca=bucain THEN
- DBMS_OUTPUT.PUT_LINE('buca = ultimabuca');
- INSERT INTO TABLE(SELECT g.GareGiocate FROM Giocatori g WHERE g.CodG = :GiocatoriParent.CodG)
- VALUES(:NEW.Buca, :NEW.NColpi, :NEW.Gara);
- ELSE
- raise_application_error (-20001, 'Esiste già la buca numero ' || :NEW.buca
- || ' per questa gara. Eseguire UPDATE se si è interessati a modificarla. Altrimenti inserire la buca numero '
- || ultimaBuca+1 || ' se possibile. L''inserimento non è stato eseguito.');
- END IF;
- END;
- /
- INSERT INTO TABLE(SELECT g.GareGiocate FROM Giocatori_V g WHERE g.CodG = 'AA008')
- VALUES(9, 16, (SELECT REF(g) FROM Gare g WHERE g.CodG = '12345'));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement