2023-01-20 11:19:33 +01:00
|
|
|
|
--Maciej Doma<EFBFBD>ski 303853 - EDABA Lab 3
|
2023-01-20 11:54:45 +01:00
|
|
|
|
----------------------- INSERT TRIGGER -----------------------
|
2023-01-20 11:19:33 +01:00
|
|
|
|
|
2023-01-20 11:57:28 +01:00
|
|
|
|
-- Run before/after trigger
|
2023-01-20 11:54:45 +01:00
|
|
|
|
-- show club which budget was affected by inserting or deleting new/old player
|
|
|
|
|
|
select * from club where id = 1
|
|
|
|
|
|
-- show player who is inserted and by that affects club budget
|
|
|
|
|
|
select * from player where id = 1000000
|
2023-01-20 11:19:33 +01:00
|
|
|
|
|
2023-01-20 11:57:28 +01:00
|
|
|
|
-- Run to create trigger
|
2023-01-20 11:54:45 +01:00
|
|
|
|
-- after inserting a player increase club budget by player value
|
|
|
|
|
|
CREATE OR REPLACE trigger insert_player_trigger after insert on player
|
|
|
|
|
|
for each row
|
|
|
|
|
|
begin
|
|
|
|
|
|
update club
|
|
|
|
|
|
set budget = budget + :NEW.transfer_value
|
|
|
|
|
|
where :NEW.club_id = id;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
2023-01-20 11:57:28 +01:00
|
|
|
|
-- Run to trigger trigger
|
2023-01-20 11:54:45 +01:00
|
|
|
|
-- insert
|
|
|
|
|
|
insert into player
|
|
|
|
|
|
values(1000000, 5, 'striker', 3, 'valid', 5, 35, 1000, 20000000, 1)
|
|
|
|
|
|
|
|
|
|
|
|
----------------------- UPDATE TRIGGER -----------------------
|
|
|
|
|
|
|
2023-01-20 11:57:28 +01:00
|
|
|
|
-- Run before/after trigger
|
2023-01-20 11:54:45 +01:00
|
|
|
|
-- show competition where prize was updated which later changes club reputation
|
|
|
|
|
|
select * from competition where id = 1
|
2023-01-20 12:00:50 +01:00
|
|
|
|
-- show club affected by update trigger when affected competition prize is high enough
|
2023-01-20 11:54:45 +01:00
|
|
|
|
select * from club where competition_id = 1
|
2023-01-20 11:19:33 +01:00
|
|
|
|
|
2023-01-20 11:57:28 +01:00
|
|
|
|
-- Run to create trigger
|
2023-01-20 11:54:45 +01:00
|
|
|
|
-- updates club reputation if the competition the club is taking part in has high enough prize value
|
2023-01-20 11:19:33 +01:00
|
|
|
|
CREATE OR REPLACE trigger update_trigger after update on competition
|
|
|
|
|
|
for each row
|
|
|
|
|
|
begin
|
|
|
|
|
|
update club
|
2023-01-20 11:54:45 +01:00
|
|
|
|
set reputation = 5
|
|
|
|
|
|
where 200000 < :NEW.prize AND :NEW.id = competition_id;
|
2023-01-20 11:19:33 +01:00
|
|
|
|
end;
|
|
|
|
|
|
|
2023-01-20 11:57:28 +01:00
|
|
|
|
-- Run to trigger trigger
|
2023-01-20 11:54:45 +01:00
|
|
|
|
-- update
|
2023-01-20 11:19:33 +01:00
|
|
|
|
update competition
|
2023-01-20 11:54:45 +01:00
|
|
|
|
set prize = 1234567
|
2023-01-20 11:19:33 +01:00
|
|
|
|
where id = 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
2023-01-20 11:54:45 +01:00
|
|
|
|
----------------------- DELETE TRIGGER -----------------------
|
|
|
|
|
|
|
2023-01-20 11:57:28 +01:00
|
|
|
|
-- Run before/after trigger
|
2023-01-20 11:54:45 +01:00
|
|
|
|
-- show club which budget was affected by inserting or deleting new/old player
|
|
|
|
|
|
select * from club where id = 1
|
2023-01-20 12:00:50 +01:00
|
|
|
|
-- select player who is deleted and by that affects club budget
|
2023-01-20 11:54:45 +01:00
|
|
|
|
select * from player where id = 1000000
|
2023-01-20 11:19:33 +01:00
|
|
|
|
|
2023-01-20 11:57:28 +01:00
|
|
|
|
-- Run to create trigger
|
2023-01-20 11:54:45 +01:00
|
|
|
|
-- after deleting a player decrease club budget by player value
|
|
|
|
|
|
CREATE OR REPLACE trigger delete_player_trigger after delete on player
|
|
|
|
|
|
for each row
|
|
|
|
|
|
begin
|
|
|
|
|
|
update club
|
|
|
|
|
|
set budget = budget - :OLD.transfer_value
|
|
|
|
|
|
where :OLD.club_id = id;
|
|
|
|
|
|
end;
|
2023-01-20 11:19:33 +01:00
|
|
|
|
|
2023-01-20 11:57:28 +01:00
|
|
|
|
-- Run to trigger trigger
|
2023-01-20 11:54:45 +01:00
|
|
|
|
-- delete
|
|
|
|
|
|
delete from player
|
|
|
|
|
|
where id = 1000000
|
2023-01-20 11:19:33 +01:00
|
|
|
|
|