Autoincrement

Aus Byte-Welt Wiki
Version vom 11. März 2008, 20:17 Uhr von EagleEye (Diskussion | Beiträge) (Die Seite wurde neu angelegt: Da es bei Orcale kein Auto Increment wie bei MySQL oder einen extra Datentyp wie bei PostgreSQL (SERIAL), muss hier ein Umweg über [[Seqenz (SQL) | Sequenz...)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springenZur Suche springen

Da es bei Orcale kein Auto Increment wie bei MySQL oder einen extra Datentyp wie bei PostgreSQL (SERIAL), muss hier ein Umweg über Sequenzen gegangen werden.

Erst wird eine Sequenz erzeugt

CREATE SEQUENCE testtable_seq START WITH 1 INCREMENT BY 1 NOMAXVALUE NOCYCLE NOCACHE;

Anschließend wird diese mit einem Trigger auf die Tabelle gelegt. Dieser erzeugt bei jedem Einfügen den nächsten Zahlenwert.

CREATE OR REPLACE TRIGGER testtable_inc_trigger 

BEFORE INSERT ON testtable FOR EACH ROW BEGIN SELECT testtable_seq.NEXTVAL INTO :NEW.id FROM DUAL; END;