summaryrefslogtreecommitdiff
path: root/sem_5/HLIN511_BDD/trigger0.sql
blob: caef8e2d01d4efdce49c3dd19611708afbb99243 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
set serveroutput on




create or replace trigger trigger_1
before insert on emprunt
for each row
begin
dbms_output.put_line('insertion du tuple '||:new.numero);
end;
/


select trigger_name from user_triggers;
drop trigger trigger1;

show errors

insert into exemplaire values (5200,'18-OCT-93',40,'EMPRUNTABLE','BON','0_18_47892_2');

select trim(to_char(sysdate,'day')) from dual;





create or replace trigger trigger_2
before insert on exemplaire
for each row
begin
if trim(to_char(sysdate,'day')) = 'monday'
then raise_application_error(-20100,'insertion impossible le lundi');
end if ;
end;
/

insert into exemplaire values (5201,'18-OCT-93',40,'EMPRUNTABLE','BON','0_18_47892_2');

drop trigger trigger_2;

create table t1 (numero number(4), date_insertion date, usager varchar(20), typeOperation varchar(12));

create or replace trigger trigger_3
after insert or update or delete on exemplaire
for each row
begin
if inserting
then
insert into t1 values (:new.numero,sysdate,user,'insertion');
elsif updating
then
insert into t1 values (:new.numero,sysdate,user,'modification');
elsif deleting
then
insert into t1 values (:old.numero,sysdate,user,'suppression');
end if;
end;
/


insert into exemplaire values (6202,'18-OCT-93',40,'EMPRUNTABLE','BON','0_18_47892_2');


update exemplaire set prix = 100 where numero = 6202;

delete from exemplaire where numero =6202;

-- programme principal
-- curseur implicite
declare
num number(4);
isbn_livre varchar(20);
begin
select numero, isbn into num, isbn_livre from exemplaire where numero =#
dbms_output.put_line(' exemplaire '||num||'  '||isbn_livre);
exception when no_data_found then dbms_output.put_line('inexistant');
end;
/


-- curseur explicite
declare
cursor c is select numero, isbn from exemplaire;
begin
for c_t in c
loop
dbms_output.put_line(' exemplaire '||c_t.numero||'  '||c_t.isbn);
end loop;
exception when no_data_found then dbms_output.put_line('inexistant');
end;
/