145 lines
3.0 KiB
MySQL
145 lines
3.0 KiB
MySQL
--Aufgabe 1
|
|
|
|
--a)Schon verhanden;Create or Replace
|
|
--b)so oft wie es den ZIP Code 02189 gibt
|
|
--c)so oft wie Spalten in student sind weil der Trigger auf die Tabelle ist
|
|
--d) wenn die ZIP null ist
|
|
|
|
CREATE OR REPLACE TRIGGER student_au
|
|
AFTER UPDATE ON STUDENT
|
|
FOR EACH ROW
|
|
WHEN (NVL(NEW. ZIP , ' ') <> OLD. ZIP )
|
|
BEGIN
|
|
UPDATE student
|
|
SET zip = '01247'
|
|
WHERE zip = '02189';
|
|
END;
|
|
/
|
|
|
|
--Aufgabe 2
|
|
|
|
--a) ja weil zip eventuell mit null verglichen wird
|
|
--b)
|
|
CREATE OR REPLACE TRIGGER instructor_bi
|
|
BEFORE INSERT ON INSTRUCTOR
|
|
FOR EACH ROW
|
|
DECLARE
|
|
v_work_zip CHAR(1);
|
|
|
|
BEGIN
|
|
|
|
:NEW.CREATED_BY := USER;
|
|
:NEW.CREATED_DATE := SYSDATE;
|
|
:NEW.MODIFIED_BY := USER;
|
|
:NEW.MODIFIED_DATE := SYSDATE;
|
|
|
|
IF(:NEW.ZIP IS NULL) THEN
|
|
RAISE_APPLICATION_ERROR (-20001, 'Zip code is required!');
|
|
END IF;
|
|
|
|
SELECT 'Y'
|
|
INTO v_work_zip
|
|
FROM zipcode
|
|
WHERE zip = :NEW.ZIP;
|
|
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
RAISE_APPLICATION_ERROR (-20000, 'Zip code is not valid!');
|
|
END;
|
|
/
|
|
--c)
|
|
CREATE OR REPLACE TRIGGER instructor_bi
|
|
BEFORE INSERT ON INSTRUCTOR
|
|
FOR EACH ROW
|
|
DECLARE
|
|
v_work_zip CHAR(1);
|
|
|
|
BEGIN
|
|
:NEW.instructor_id := INSTRUCTOR_ID_SEQ.NEXTVAL;
|
|
:NEW.CREATED_BY := USER;
|
|
:NEW.CREATED_DATE := SYSDATE;
|
|
:NEW.MODIFIED_BY := USER;
|
|
:NEW.MODIFIED_DATE := SYSDATE;
|
|
|
|
IF(:NEW.ZIP IS NULL) THEN
|
|
RAISE_APPLICATION_ERROR (-20001, 'Zip code is required!');
|
|
END IF;
|
|
|
|
SELECT 'Y'
|
|
INTO v_work_zip
|
|
FROM zipcode
|
|
WHERE zip = :NEW.ZIP;
|
|
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
RAISE_APPLICATION_ERROR (-20001, 'Zip code is not valid!');
|
|
END;
|
|
/
|
|
|
|
--Aufgabe 3
|
|
--a)Before Insert; ROW(FOR EACH ROW)
|
|
--b)weil man NEW sonst nicht verwenden kann
|
|
-- --c):NEW.COURSE_NO := COURSE_NO_SEQ.NEXTVAL;
|
|
-- :NEW.CREATED_BY := USER;
|
|
-- :NEW.CREATED_DATE := SYSDATE;
|
|
-- :NEW.MODIFIED_BY := USER;
|
|
-- :NEW.MODIFIED_DATE := SYSDATE;
|
|
--d)
|
|
CREATE OR REPLACE TRIGGER enrollment_bi
|
|
BEFORE INSERT ON ENROLLMENT
|
|
FOR EACH ROW
|
|
|
|
BEGIN
|
|
:NEW.CREATED_BY := USER;
|
|
:NEW.CREATED_DATE := SYSDATE;
|
|
:NEW.MODIFIED_BY := USER;
|
|
:NEW.MODIFIED_DATE := SYSDATE;
|
|
:NEW.ENROLL_DATE := SYSDATE;
|
|
END;
|
|
/
|
|
--Aufgabe 4
|
|
|
|
CREATE OR REPLACE TRIGGER course_bi
|
|
BEFORE INSERT ON COURSE
|
|
FOR EACH ROW
|
|
DECLARE
|
|
v_temp COURSE.COURSE_NO%type;
|
|
BEGIN
|
|
|
|
Select COST into v_temp FROM COURSE
|
|
WHERE COURSE_NO = :NEW.COURSE_NO;
|
|
|
|
:NEW.COURSE_NO := COURSE_NO_SEQ.NEXTVAL;
|
|
:NEW.CREATED_BY := USER;
|
|
:NEW.CREATED_DATE := SYSDATE;
|
|
:NEW.MODIFIED_BY := USER;
|
|
:NEW.MODIFIED_DATE := SYSDATE;
|
|
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
RAISE_APPLICATION_ERROR (-20003, 'Prerequesite Course not existing!');
|
|
END;
|
|
/
|
|
--Aufgabe 5
|
|
|
|
CREATE OR REPLACE TRIGGER course_bi
|
|
BEFORE INSERT ON COURSE
|
|
FOR EACH ROW
|
|
DECLARE
|
|
v_temp COURSE.COURSE_NO%type;
|
|
BEGIN
|
|
|
|
Select COST into v_temp FROM COURSE
|
|
WHERE COURSE_NO = :NEW.COURSE_NO;
|
|
|
|
:NEW.COURSE_NO := COURSE_NO_SEQ.NEXTVAL;
|
|
:NEW.CREATED_BY := USER;
|
|
:NEW.CREATED_DATE := SYSDATE;
|
|
:NEW.MODIFIED_BY := USER;
|
|
:NEW.MODIFIED_DATE := SYSDATE;
|
|
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
RAISE_APPLICATION_ERROR (-20003, 'Prerequesite Course not existing!');
|
|
END;
|
|
/ |