-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathview.sql
63 lines (53 loc) · 1.92 KB
/
view.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
CREATE VIEW instructor_summary_view AS
SELECT i.instructor_id, COUNT(s.section_id) total_courses
FROM instructor i
LEFT OUTER JOIN section s
ON (i.instructor_id = s.instructor_id) GROUP BY i.instructor_id;
delete from instructor_summary_view where instructor_id = 111;
drop trigger INSTRUCTER_LOGGER;
select * from all_views;
rollback;
CREATE OR REPLACE TRIGGER instructor_summary_del
INSTEAD OF DELETE ON instructor_summary_view
FOR EACH ROW
BEGIN
DELETE FROM instructor
WHERE instructor_id = :OLD.INSTRUCTOR_ID;
END;
/
describe student;
describe zipcode;
create view stud_address as
select s.STUDENT_ID,s.FIRST_NAME,s.LAST_NAME,s.STREET_ADDRESS,s.ZIP,z.city,z.state from student s,zipcode z where s.zip = z.zip;
CREATE OR REPLACE TRIGGER stud_address_insert
INSTEAD OF INSERT ON stud_address
FOR EACH ROW
declare v_zip varchar(5);
available number;
BEGIN
v_zip := :NEW.ZIP;
select count(*) into available from zipcode where zip = v_zip;
if (available = 1)then
INSERT INTO STUDENT(STUDENT_ID,FIRST_NAME,LAST_NAME,STREET_ADDRESS,ZIP) VALUES
(:NEW.STUDENT_ID,:NEW.FIRST_NAME,:NEW.LAST_NAME,:NEW.STREET_ADDRESS,:NEW.ZIP);
else RAISE_APPLICATION_ERROR(-20017, 'Zipcode is invalid.');
end if;
END;
CREATE OR REPLACE TRIGGER stud_address_insert
INSTEAD OF INSERT ON stud_address
FOR EACH ROW
declare v_zip varchar(5);
available number;
BEGIN
v_zip := :NEW.ZIP;
select count(*) into available from zipcode where zip = v_zip;
if (available <> 1)then
insert into zipcode (ZIP,city,state) values (:NEW.ZIP,:NEW.CITY,:NEW.STATE)
end if;
INSERT INTO STUDENT(STUDENT_ID,FIRST_NAME,LAST_NAME,STREET_ADDRESS,ZIP) VALUES
(:NEW.STUDENT_ID,:NEW.FIRST_NAME,:NEW.LAST_NAME,:NEW.STREET_ADDRESS,:NEW.ZIP);
END;
select * from stud_address where STUDENT_ID = 404;
select * from student order by student_id desc;
select * from zipcode;
INSERT INTO stud_address (FIRST_NAME,LAST_NAME,STREET_ADDRESS,zip)VALUES ('rAM','Kumar','asd','11101');