Zum Inhalt springen

Autoincrement Sequence beim löschen eines Datensatzes verringern


Der_Lampe

Empfohlene Beiträge

Moin moin

hab ein Problem mit unserer Oracle Datenbank, ich habe mir eine Sequence geschrieben

create sequence seq_test 

start with 1 

increment by 1 

nomaxvalue; 
mit dieser sequence erhöhe ich meine ID um 1 wenn ich einen neuen Datensatz in die Tabelle einfüge mit:
insert into table (ID, x, y, z) values (seq_test.nextval, x, y, z)

wenn ich einen Datensatz aus der Tabelle entferne wird die Sequence allerdings nicht verringert => beim erneuten Einfügen eines Datensatzes stimmt die ID nicht mehr.

weiß da jemand eine Lösung?

MfG

Link zu diesem Kommentar
Auf anderen Seiten teilen

Warum möchtest Du denn beim Löschen die Sequence zurückzählen? Ist es denn so, dass Du ausschließen kannst, dass einmal nicht der letzte Datensatz gelöscht wird? Sollte nämlich ein anderer als dieser gelöscht werden, Du die Sequence eins zurückdrehen, passt Dein nächster insert nicht mehr und Du bekommst ein dup_val_on_index

Ansonsten

alter sequence blablub INCREMENT BY -1;

nächste zahl wählen

alter sequence blablub INCREMENT BY 1;

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ist es denn so, dass Du ausschließen kannst, dass einmal nicht der letzte Datensatz gelöscht wird? Sollte nämlich ein anderer als dieser gelöscht werden, Du die Sequence eins zurückdrehen, passt Dein nächster insert nicht mehr und Du bekommst ein dup_val_on_index

auch wieder wahr :upps ich glaub ich hatte mich da gerade etwas festgefahren :rolleyes: werds wohl einfach so lassen die id muss ja nicht fortlaufend sein...und an sowas denk ich net :upps und ich grübel derb lang wie ich das lösen kann :confused:

@brabax: seq.test.nextval erhöht den Zähler der Sequence und gibt ihn aus

danke für die schnelle Antwort euch beiden! ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Um genau zu sein DARF in diesem Fall die ID auch nicht fortlaufend sein. Die ID ist die Identität deines Datensatzes, wenn du den Satz löscht darf ein anderer nicht die gleiche ID bekommen weil die Identität über den Zeitraum nicht mehr eindeutig wäre. Das erzeugt Probleme z.b. bei Paging in Anwendungen. Häufig referenzieren Anwendungen DataRows nur über ihre ID. Ein späteres UPDATE WHERE ID = ... könnte dir deinen neuen Datensatz verändern obwohl der alte gemeint war.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...