NextVal Oracle8.17i EE für NT/2000

Folgendes Prob. Ich habe eine unique id die ich bei einem insert automatisiert hochzählen will.

In schwacher Erinnerung aus meiner Schulzeit geistert da noch irgendwas mit NextVal in meinem Kopf herum ,-)).

insert into tabellenname(id,val1,val2)
VALUES (???,val1,val2)

nun stimmt das in etwar? und wie sieht das nextVal Statement aus.

Oder noch besser - hat jemand eine Adresse für mich an der ich eine art SelfSql downloaden kann?

Dank Euch

Mario

sequence verwenden
Hi Mario,

Oracle kennt keinen autoincrement primary key, muß man also selber machen. Dafür gibt es das Konstrukt sequence (-> Handbuch CREATE SEQUENCE …).

Beipiel:

create table xxx (id number);
create sequence seq_xxx;
insert into xxx values (seq_xxx.nextval);

seq_xxx generiert eindeutige, fortlaufende Ids.
Mit .nextval bekommt man die nächste Id.
Mit .currval bekommt man die zuletzt vergebene Id.

Wichtig: xxx und seq_xxx hängen Oracle-intern nicht zusammen! Wenn du seq_xxx löscht und neu anlegst, dann werden die Ids wieder mit 1 beginnend erzeugt!

Man kann das ganze auch in einen insert-Trigger verpacken, der eindeutige Ids sicherstellt, so dass auch folgendes insert-statement funktioniert:
insert into xxx values (null);

ciao,
Bernhard

Alles jetzt erinnere ich mich daran das das doch nicht mehr so einfach war.,-)

aber danke jetzt weis ich wieder in welche richtung ich suchen muß.

cu

mario

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]