Zufällige eindeutige Zahl (nicht ID)

So angepasst. Ich hole mir für den Typ die höchste Nummer und geht dann von 1 bis höchste Nummer und wenn eine nicht vergeben ist nimmt er die. Ansonsten eben die höchste Nummer +1. Ich habe das Gefühl, dass das nun mit Kanonen auf Spatzen ist, aber es funktioniert und all zu oft wird in der Tabelle nichts geändert.
Code:
create or replace TRIGGER MEIN_TRIGGER_TRG
BEFORE INSERT ON MEINE_TABELLE
FOR EACH ROW
DECLARE
  maxZahl NUMBER(4);
  counter NUMBER(4);
BEGIN
  SELECT MAX(NUMMER) INTO maxZahl FROM meine_tabelle WHERE type = :NEW.TYPE;
  FOR i in 1 .. maxZahl
  LOOP
    SELECT COUNT(*) INTO counter FROM meine_tabelle WHERE type = :NEW.TYPE AND NUMMER = i;
    IF counter = 0 THEN
      :NEW.NUMMER := i;
      EXIT;
    END IF;
  END LOOP;
  IF :NEW.NUMMER = 0 OR :NEW.NUMMER IS NULL THEN
    :NEW.NUMMER := maxZahl+1;
  END IF;
END;
 
Werbung:
Werbung:
Zurück
Oben