final Maciek triggers

This commit is contained in:
Maciekxdabu 2023-01-20 11:54:45 +01:00
parent e3311aa239
commit 8526220b43

View File

@ -1,70 +1,69 @@
--Maciej Domañski 303853 - EDABA Lab 3
----------------------- INSERT TRIGGER -----------------------
-- Show data before triggers
select * from competition where id < 10
select * from club where competition_id = 1
-- 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
-- insert trigger creation
-- 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;
-- insert
insert into player
values(1000000, 5, 'striker', 3, 'valid', 5, 35, 1000, 20000000, 1)
----------------------- UPDATE TRIGGER -----------------------
-- Show data that is affected by triggers
-- 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
-- update trigger creation
-- updates club reputation if the competition the club is taking part in has high enough prize value
CREATE OR REPLACE trigger update_trigger after update on competition
for each row
begin
update club
set budget = 2000
where 20 < :NEW.prize AND :NEW.id = competition_id;
set reputation = 5
where 200000 < :NEW.prize AND :NEW.id = competition_id;
end;
-- delete trigger creation
-- Show data that triggers trigger
-- trigger triggers
-- update
update competition
set prize = 1000
set prize = 1234567
where id = 1;
-- Show data after trigger
select * from competition where id < 10
select * from club where competition_id = 1
----------------------- DELETE TRIGGER -----------------------
-- Show data that is affected by triggers
-- 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
-- delete trigger creation
-- 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;
-- NEW - valid only for insert/update
-- OLD - delete/upate
--CREATE OR REPLACE trigger update_nb_emp after insert or update or delete on emp
--for each row
--begin
-- -- increase number of employes in given department
-- update dept
-- set nb_emp = nb_emp +1
-- where deptno = :NEW.deptno;
--
-- -- decrease number of employes in given department
-- -- here we do not decrease number of employees if there are no data in department because of OLD
-- update dept
-- set nb_emp = nb_emp -1
-- where deptno = :OLD.deptno;
--end;
--
--
--select * from dept;
--select * from emp;
--insert into emp
--values(800, 'John', 'Rambo', 7788,'2022-01-20',7000, 0,40);
--
--update emp
--set deptno = 30
--where empno = 800
--
--delete from emp
--where empno = 800
--
--select * from emp
--
--update dept
--set nb_emp = (select count(*) from emp where emp.deptno = dept.deptno)
--
-- delete
delete from player
where id = 1000000