[oracle] Trigger

MonkeyMan

Grünschnabel
Hallo,

ich möchte mir in Oracle eine Art Auto_Increment "zusammenbauen".

Den herkömmlichen Weg über SEQUENCE + TRIGGER bekomme ich auch hin.

Problem, dabei ist nur, dass die SEQUENCE natürlich immer weiter hochzählt, Auch wenn zwischendurch alle Enträge aus der Tabelle gelöscht wurden, erhält ein neuer Eintrag naturgemäß, die nächste Nummer der SEQUENCE.

Mein Ansatz, war nun anstatt mit einer SEQUENCE zu arbeiten, immer die höchste ID +1 zu ermitteln. Also, in etwa so:

Code:
CREATE OR REPLACE TRIGGER id_trigger
BEFORE INSERT ON xy_tabelle
FOR EACH ROW
Begin
select NVL( (MAX(:OLD.id)+1),1 ) into :NEW.id from DUAL;
End;

Geht nur so nicht, da der alte Wert :)OLD.id) natürlich immer null ist, da die Zeile ja erst noch eingefügt wird......

Frage: Wie kann ich innerhalb des Triggers die komplette Tabelle ansprechen also in etwa so
Code:
select NVL( (MAX(id)+1),1 ) from tabelle into :NEW.id from DUAL;

Oder ist der Ansatz der falsche bzw. kann man etwas an einer SEQUENCE verstellen, das sie ggf. bei neu vorn vorne startet...?
 
Man kann eine Sequence verstellen!

Bin mir nur nicht mehr genau sicher wie.

Versuchs mit ALTER SEQUENCE

schau mal in der Syntax-Beschreibung für ALTER SEQUENCE nach

vop
 

Neue Beiträge

Zurück