Zum Inhalt springen

Autoincrement Sequence beim löschen eines Datensatzes verringern


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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;

Geschrieben
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! ;)

Geschrieben

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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...