WUT_Computer_Science/SQL stuff/Maciej_Domanski-EDABA_Lab-3.sql

73 lines
2.1 KiB
MySQL
Raw Normal View History

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
-- show club affected by update trigger when competition prize is high enough
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
-- select 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 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