Created
December 14, 2011 13:08
-
-
Save aliasbind/1476501 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--3. Să se creeze un trigger care să permită ca numai salariaţii având codul job-ului AD_PRES sau | |
--AD_VP să poată câştiga mai mult de 15000. | |
--Obs: Trigger-ul se declanşează de un număr de ori = nr de înregistrări inserate sau al căror câmp | |
--salary este modificat (deci are legătură cu datele din tabel) => este un trigger la nivel de linie. | |
create or replace trigger salary_limit | |
before insert or update on emp | |
for each row | |
begin | |
if :new.job_id != 'AD_PRES' and :new.job_id != 'AD_VP' then | |
if :new.salary > 15000 then | |
raise_application_error(-20345, 'Salariul este prea mare.'); | |
end if; | |
end if; | |
end; | |
-- 4. Să se implementeze cu ajutorul unui declanşator constrângerea că valorile salariilor nu pot fi | |
-- reduse (trei variante: WHEN, IF, PROCEDURE). După testare, suprimaţi trigger-ii creaţi. | |
create or replace trigger salary_dont_reduce | |
before insert or update on emp | |
for each row | |
begin | |
if :new.salary < :old.salary then | |
raise_application_error(-20345, 'Nu este voie sa se scada salariul vreunui angajat.'); | |
end if; | |
end; | |
-- 5. Să se creeze un trigger care calculează comisionul unui angajat ‘SA_REP’ atunci când este | |
-- adăugată o linie tabelului emp sau când este modificat salariul. | |
-- Obs: Dacă se doreşte atribuirea de valori coloanelor utilizând NEW, trebuie creaţi triggeri | |
-- BEFORE ROW. Dacă se încearcă scrierea unui trigger AFTER ROW, atunci se va obţine o eroare | |
-- la compilare. | |
-- 6. Să se implementeze cu ajutorul unui declanşator constrângerea că, dacă salariul minim şi cel | |
-- maxim al unui job s-ar modifica, orice angajat având job-ul respectiv trebuie să aibă salariul | |
-- între noile limite (RAISE eroare; EXCEPTION). | |
create or replace trigger |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment