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');
|