Hallo,
nach langem suchen habe ich leider keinen Eintrag zu dem Thema hier im Forum oder bei Google gefunden.
PKs mit einer Sequenz generieren zu lassen funktioniert ja sehr leicht, aber gibt es eine einfache Möglichkeit nach der Generierung zu prüfen ob dieser Verfügbar ist?
Beispiel:
Einträge existieren in der Tabelle mit PKs von 300-400. Die Sequenz startet bei 1 und inkrementiert um 1. Bei PK 299 sollte der nächste nicht 300 sein sondern 401.
Erreiche ich das nur duch Trigger und function/procedure oder extra Key Tabelle?
ja, wäre eine Option und denke ich auch die einfachste. Ich hätte nur gerne das die PKs von der DB generiert werden ohne das ich selber Hand anlegen muss.
Ich bekomme Daten aus einer Excel Tabelle mit Pks die nicht verändert werden dürfen. Die Daten möchte ich zur Laufzeit einfügen ohne die sequenz anfassen zu müssen.
Das geht nur über einen Trigger der prüft ob ein Wert angegeben wurde, und dann ein entsprechendes setval() aufruft.
Alternativ, nach dem Importieren des Excel-Sheets einmal setval() aufrufen. Das setzt aber voraus, dass während dem Importieren keine anderen INSERTs gemacht werden.
Ich verstehe den Sinn noch nicht, warum die Sequence fortlaufend, im Sinne von ohne Lücken sein muss. Das scheint ja dein Hauptanliegen zu sein, oder?
Man könnte ja auch definieren, das arID, wenn durch PG vergeben negativ ist. Alles was über Excel eingefügt wird dann positiv, weil es so in der Excel steht.
Damit sollte es keine Überschneidungen mehr geben.
create sequence seq_test start with -1 increment by -1;
Wäre natürlich auch eine Möglichkeit, ist aber für die Ausgabe doof. (muss im Programm dann wieder *-1 gerechnet werden)
Lücken sind egal, es geht um Einträge die “von Hand” eingefügt worden sind und diese sollen übersrpungen werden. Das System läuft einen Tag und wird danach wieder auf Ursprung zurück gesetzt. Trotzdem möchte ich nicht von Hand die Pflege der PKs übernehmen.