summaryrefslogtreecommitdiffstats
path: root/Bachelor/Datenbanken 2/Praktikum4/sequenz_Trigger.sql
blob: 38963db3d02c6652a03e3b4f96028ff9d06d514b (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
-- Trigger zur Generierung eines synthetischen, sequenziellen Integer-
-- Datentyps 

--************************************************************

-- Der Trigger wird f�r die folgende Tabelle Test generiert:

create table test
( mypk integer not null,
  mycolumn varchar2(3),
  primary key (mypk)
);

--************************************************************
--           TRIGGER-DEKLARATION
--************************************************************

-- trigger-kopf
create or replace trigger synthkey
before insert on test
for each row

-- deklarationsblock
declare
   vmax integer;

-- Anweisungen
begin

-- max wert von pk suchen
select max(mypk) into vmax
from   test;

if   vmax is null
then vmax := 0;
end if;

vmax:=vmax+1;

-- aktuellen PK-Wert des Inserts mit vmax belegen
:new.mypk := vmax;

end;
/

-- ***************************************************


-- entweder gibt man beim insert f�r die PK-Spalte mypk einen dummy ein,
-- der dann vom Trigger �berschrieben wird:

insert into test values (0,'AAA');

-- oder man l�sst den Wert f�r die PK-Spalte beim insert weg:

insert into test (mycolumn) values ('BBB');