Oracle DB Wert in Spalte automatisch erhöhen
Hallo Zusammen,
ich möchte per VBS Schript Werte in einer Oracle 10g Datenbank in eine Tabelle importieren.
Ich habe nun das Problem, das in der Tabelle eine Spalte (ID) angegeben ist, welche sich automatisch bei einen neuem Datensatz um eins erhöhen soll.
Bis jetzt war die DB auf einem MS SQL Server, hier gab es diese funktion integriert.
Wie kann ich dies bei einer Oracle DB einstellen ?
Zum Editieren benutze ich den Oracle SQL Developer.
Habe bereits im I-Net gelesen, das das hier über Sequences und Trigger möglich sein soll.
Nur finde ich da leider keine detailierte Beschreibung.
Oder gibt es auch noch andere Möglichkeiten ?
ich möchte per VBS Schript Werte in einer Oracle 10g Datenbank in eine Tabelle importieren.
Ich habe nun das Problem, das in der Tabelle eine Spalte (ID) angegeben ist, welche sich automatisch bei einen neuem Datensatz um eins erhöhen soll.
Bis jetzt war die DB auf einem MS SQL Server, hier gab es diese funktion integriert.
Wie kann ich dies bei einer Oracle DB einstellen ?
Zum Editieren benutze ich den Oracle SQL Developer.
Habe bereits im I-Net gelesen, das das hier über Sequences und Trigger möglich sein soll.
Nur finde ich da leider keine detailierte Beschreibung.
Oder gibt es auch noch andere Möglichkeiten ?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 149681
Url: https://administrator.de/contentid/149681
Ausgedruckt am: 25.11.2024 um 19:11 Uhr
2 Kommentare
Neuester Kommentar
Nein, ein Autoin oder ähnliches gibt es bei Oracle nicht.
Erstelle eine Sequence und lass dir von der dann die Werte rausgeben. Diese stellt sicher, daß die Werte nur einmal
Kurze und knackige Anleitung mit Beispiel hier: http://www.techonthenet.com/oracle/sequences.php
Erstelle eine Sequence und lass dir von der dann die Werte rausgeben. Diese stellt sicher, daß die Werte nur einmal
Kurze und knackige Anleitung mit Beispiel hier: http://www.techonthenet.com/oracle/sequences.php
Konkret, wenn du es über einen Trigger lösen möchtest :
CREATE OR REPLACE TRIGGER trig_get_pk
BEFORE
INSERT
ON MyTable
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
SELECT My_SEQ.NEXTVAL
INTO :NEW.my_PrimaryKey
FROM DUAL;
END trig_get_pk;
/
Dazu musst du noch die Sequence einrichten :
CREATE SEQUENCE my_SEQ
INCREMENT BY 1
START WITH 1
MINVALUE 1
MAXVALUE 999999999999999999999999999
NOCYCLE
NOORDER
CACHE 1000
/
Gruss
CREATE OR REPLACE TRIGGER trig_get_pk
BEFORE
INSERT
ON MyTable
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
SELECT My_SEQ.NEXTVAL
INTO :NEW.my_PrimaryKey
FROM DUAL;
END trig_get_pk;
/
Dazu musst du noch die Sequence einrichten :
CREATE SEQUENCE my_SEQ
INCREMENT BY 1
START WITH 1
MINVALUE 1
MAXVALUE 999999999999999999999999999
NOCYCLE
NOORDER
CACHE 1000
/
Gruss