summaryrefslogtreecommitdiffstats
path: root/Bachelor/Datenbanken 2/Praktikum4/sequenz_Trigger.sql
diff options
context:
space:
mode:
authorSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
committerSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
commit33613a85afc4b1481367fbe92a17ee59c240250b (patch)
tree670b842326116b376b505ec2263878912fca97e2 /Bachelor/Datenbanken 2/Praktikum4/sequenz_Trigger.sql
downloadStudium-master.tar.gz
Studium-master.tar.bz2
add new repoHEADmaster
Diffstat (limited to 'Bachelor/Datenbanken 2/Praktikum4/sequenz_Trigger.sql')
-rw-r--r--Bachelor/Datenbanken 2/Praktikum4/sequenz_Trigger.sql59
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');
+
+
+