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
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!