-- RACZEJ DOBRZE, MI SIE NIE UDALO URUCHOMIC, BO SQL TWIERDZI, -- ZE TABELA 'PIWOSZ' NIE ISTNIEJE I NIE DODAJE WYZWALACZA -- TRIGGER CREATE OR REPLACE TRIGGER PIWAPIWOSZA_INSERT INSTEAD OF INSERT ON PIWAPIWOSZA FOR EACH ROW DECLARE IDPIWA NUMBER; IDPIWOSZA NUMBER; BEGIN SELECT COUNT(*) INTO IDPIWA FROM PIWO WHERE NAZWA_PIWA = :NEW.NAZWA_PIWA; IF IDPIWA=0 THEN -- jesli nie ma piwa to utworz SELECT NVL(MAX(ID_PIWA), 0) INTO IDPIWA FROM PIWO; IDPIWA := IDPIWA + 1; -- 'browar' nie znany, dajemy NULL INSERT INTO PIWO VALUES(IDPIWA, :NEW.NAZWA_PIWA, NULL, NULL); END IF; -- wczytaj ID piwa utworzonego lub juz istniejacego SELECT ID_PIWA INTO IDPIWA FROM PIWO WHERE NAZWA_PIWA = :NEW.NAZWA_PIWA; SELECT COUNT(*) INTO IDPIWOSZA FROM PIWOSZ WHERE NAZWISKO = :NEW.NAZWISKO; IF IDPIWOSZA=0 THEN -- jesli nie ma piwosza to utworz SELECT NVL(MAX(ID_PIWA), 0) INTO IDPIWOSZA FROM PIWA; IDPIWOSZA := IDPIWOSZA + 1; INSERT INTO PIWOSZ VALUES(IDPIWOSZA, :NEW.NAZWISKO, :NEW.IMIE, NULL); ELSE -- jesli jest to aktualizuj mu imie UPDATE PIWOSZ SET IMIE = :NEW.IMIE WHERE NAZWISKO = :NEW.NAZWISKO; END IF; SELECT ID_PIWOSZA INTO IDPIWOSZA FROM PIWOSZ WHERE NAZWISKO = :NEW.NAZWISKO; -- powiaz lubiane piwo z piwoszem INSERT INTO LUBI VALUES (IDPIWA, IDPIWOSZA); END; -- TESTY INSERT INTO PIWAPIWOSZA VALUES ('NAZWISKO 1', 'IMIE 1','PIWO 1', NULL); -- ZMIANA IMIENIA PIWOSZA INSERT INTO PIWAPIWOSZA VALUES ('NAZWISKO 1', 'IMIE ZMIENIONE!','PIWO 1', NULL);