Autowert mit Trigger simulieren!

Hallo,
ich bin Einsteiger in SQL und möchte den bei Access bekannten „AutoWert“ in SQL auf einer Oracle Datenbank per Trigger nachbauen. Kann mir jemand sagen, wie der Script aussehen muss, oder mir ne gute Internetreferenz geben?

Vielen Dank
Rene

Hi,

ich bin Einsteiger in SQL und möchte den bei Access bekannten
„AutoWert“ in SQL auf einer Oracle Datenbank per Trigger
nachbauen. Kann mir jemand sagen, wie der Script aussehen
muss, oder mir ne gute Internetreferenz geben?

Da gibt es zwei Dinge: erstens eine Sequence, das ist ein Objekt, das bei jedem Aufruf einen internen Wert erhöht und zurückgibt. Zweitens den Trigger selbst.

Zunächst die Sequence:
Create sequence Tabelle_Spalte_Seq;
(das ist nur eine Namenkonvention, wobei Tabelle durch den Namen Deiner Tabelle und Spalte durch den Namen der Spalte ersetzt werden sollte).

Dann den Trigger:

create or replace trigger Tabelle\_AutoWert before insert on Tabelle for each row is
begin
 select Tabelle\_Spalte\_Seq.nextval into :new.spalte from dual;
exception
 when others then
 null;
end;

Das ist für den Anfang alles. Es gibt sicher Gründe, warum ich es so und nicht anders machen würde, aber das würde den Rahmen sprengen. Ich empfehle Dir das unten angesprochene Buch durchzuarbeiten:
http://www.wer-weiss-was.de/cgi-bin/forum/showarchiv…

Gruß

J.

Danke erstmal für den Tip, habe da aber noch ein Problem,
wenn ich diese Befehlskette eingegeben habe und nach dem Semicolon hinter end Enter drücke, passiert nix, er springt nur in die nächste Zeile.

Ich hoffe es ist nur eine Kleinigkeit!

Vielen Dank

Hi,

Danke erstmal für den Tip, habe da aber noch ein Problem,
wenn ich diese Befehlskette eingegeben habe und nach dem
Semicolon hinter end Enter drücke, passiert nix, er springt
nur in die nächste Zeile.

„Er“? Mit welchem Programm arbeitest Du?
Falls SqlPlus: dann mußt Du ans Ende der Befehlskette noch einen abschließenden Slash ("/") anfügen.

Ich hoffe es ist nur eine Kleinigkeit!

Tatsächlich sind es zwei: streiche das „is“ beim Create-Statement:

create or replace trigger Tabelle\_AutoWert before insert on Tabelle for each row
begin
 select Tabelle\_Spalte\_Seq.nextval into :new.spalte from dual;
exception
 when others then
 null;
end;
/

Gruß

J.

Es ist SQL*PLUS von Oracle, werde es jetzt nochmal testen, danke!