diff options
Diffstat (limited to 'Bachelor/Datenbanken 2/Praktikum4/sequenz_Trigger.sql')
| -rw-r--r-- | Bachelor/Datenbanken 2/Praktikum4/sequenz_Trigger.sql | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/Bachelor/Datenbanken 2/Praktikum4/sequenz_Trigger.sql b/Bachelor/Datenbanken 2/Praktikum4/sequenz_Trigger.sql new file mode 100644 index 0000000..38963db --- /dev/null +++ b/Bachelor/Datenbanken 2/Praktikum4/sequenz_Trigger.sql @@ -0,0 +1,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');
+
+
+
|
