mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-07-04 17:43:12 +02:00
final Maciek triggers
This commit is contained in:
parent
e3311aa239
commit
8526220b43
@ -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
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user