mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-07-04 17:03:12 +02:00
add triggers Krzysztof
This commit is contained in:
parent
bee610ffd2
commit
5ccf0769c5
@ -1 +1,96 @@
|
|||||||
--Krzysztof Rudnicki 307585 - EDABA Lab 3
|
-- Author: Krzysztof Rudnicki
|
||||||
|
-- Student number: 307585
|
||||||
|
|
||||||
|
--=======================insert_trigger=======================
|
||||||
|
|
||||||
|
-- show data
|
||||||
|
-- show competition which reputation was affected by attendance of the newly inserted match
|
||||||
|
select * from competition where id = 1
|
||||||
|
-- show match who is inserted and by that affects competition reputation
|
||||||
|
select * from match where id = 1234567
|
||||||
|
|
||||||
|
-- create trigger
|
||||||
|
-- set competition reputation equal to max (5) reputation if the match in this competition was attended by at least 10k people, and to 1 otherwise
|
||||||
|
CREATE OR REPLACE trigger match_insert_trigger after insert on match
|
||||||
|
for each row
|
||||||
|
begin
|
||||||
|
update competition
|
||||||
|
set reputation = 5
|
||||||
|
where id = :NEW.competition_id AND :NEW.attendance > 10000;
|
||||||
|
|
||||||
|
update competition
|
||||||
|
set reputation = 1
|
||||||
|
where id = :NEW.competition_id AND :NEW.attendance < 10000;
|
||||||
|
end;
|
||||||
|
|
||||||
|
-- trigger trigger
|
||||||
|
-- insert
|
||||||
|
-- sufficient (at least 10k attendance) to change competition reputation
|
||||||
|
insert into match
|
||||||
|
values(1234567, 10, 5, 30000, 'sunny', 90, To_date(TRUNC(DBMS_RANDOM.VALUE(TO_CHAR(DATE '1900-01-01','J') ,TO_CHAR(DATE '2023-12-31','J'))), 'J'), 'referre', 1)
|
||||||
|
|
||||||
|
-- insufficient (less than 10k attendance) to change competition reputation
|
||||||
|
insert into match
|
||||||
|
values(1234567, 10, 5, 3000, 'sunny', 90, To_date(TRUNC(DBMS_RANDOM.VALUE(TO_CHAR(DATE '1900-01-01','J') ,TO_CHAR(DATE '2023-12-31','J'))), 'J'), 'referre', 1)
|
||||||
|
|
||||||
|
delete from match where id = 1234567
|
||||||
|
|
||||||
|
--=======================update_trigger=======================
|
||||||
|
|
||||||
|
-- Run before/after trigger
|
||||||
|
-- show club affected by update trigger when manager reputation influences club reputation
|
||||||
|
select * from club where manager_id = 1
|
||||||
|
-- show manager which update influences club reputation
|
||||||
|
select * from manager where id = 1
|
||||||
|
|
||||||
|
|
||||||
|
-- Run to create trigger
|
||||||
|
-- updates club reputation if the competition the club is taking part in has high enough prize value
|
||||||
|
CREATE OR REPLACE trigger update_maanger_trigger after update on manager
|
||||||
|
for each row
|
||||||
|
begin
|
||||||
|
update club
|
||||||
|
set reputation = :NEW.reputation
|
||||||
|
where id = :NEW.club_id;
|
||||||
|
end;
|
||||||
|
|
||||||
|
-- Run to trigger trigger
|
||||||
|
-- update
|
||||||
|
-- update manager reputation to 1 and trigger update for club to set reputation to 1
|
||||||
|
update manager
|
||||||
|
set reputation = 1
|
||||||
|
where id = 1;
|
||||||
|
|
||||||
|
-- update manager reputation to 5 and trigger update for club to set reputation to 5
|
||||||
|
update manager
|
||||||
|
set reputation = 5
|
||||||
|
where id = 1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--=======================delete_trigger=======================
|
||||||
|
|
||||||
|
-- show data
|
||||||
|
-- show competition which reputation was affected by attendance of the newly inserted match
|
||||||
|
select * from competition where id = 1
|
||||||
|
-- show match who is inserted and by that affects competition reputation
|
||||||
|
select * from match where id = 1234567
|
||||||
|
|
||||||
|
-- create trigger
|
||||||
|
-- set competition reputation equal to min (1) reputation if the match deleted from competition was attended by at least 10k people, and to 5 otherwise
|
||||||
|
CREATE OR REPLACE trigger match_delete_trigger after delete on match
|
||||||
|
for each row
|
||||||
|
begin
|
||||||
|
update competition
|
||||||
|
set reputation = 1
|
||||||
|
where id = :OLD.competition_id AND :OLD.attendance > 10000;
|
||||||
|
end;
|
||||||
|
|
||||||
|
-- trigger trigger
|
||||||
|
-- insert
|
||||||
|
-- sufficient (at least 10k attendance) to change competition reputation
|
||||||
|
insert into match
|
||||||
|
values(1234567, 10, 5, 30000, 'sunny', 90, To_date(TRUNC(DBMS_RANDOM.VALUE(TO_CHAR(DATE '1900-01-01','J') ,TO_CHAR(DATE '2023-12-31','J'))), 'J'), 'referre', 1)
|
||||||
|
|
||||||
|
delete from match where id = 1234567
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user