Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Gelöschten Datensatz wieder verwenden (https://www.delphipraxis.net/89093-geloeschten-datensatz-wieder-verwenden.html)

Angel4585 26. Mär 2007 09:21

Datenbank: Paradox • Version: äh.. • Zugriff über: DB-Kompos

Gelöschten Datensatz wieder verwenden
 
Hallo,

ich hab grad ein altes Projekt rausgekramt, weil ich da ne Funktion einbauen soll.

Problem:

Ein Datensatz wurde in der Haupttabelle gelöscht, also ID:1234 ist jetzt unbelegt.
In einer Protokoll Tabelle habe ich alle gelöschten Datensätze drin mit der Information der alten ID.
kann ich jetzt irgendwie den Datensatz aus der Protokolltabelle in die Haupttabelle schreiben, sodass dieser die gleiche ID wie davor hat?
Die ID wird automatisch mit Auto Inkrement erzeugt.

Danke schonmal

:angel:

PS: Kaum macht man ne weile kein Paradox mehr, schon vergisst man die Version :duck:

shmia 26. Mär 2007 09:40

Re: Gelöschten Datensatz wieder verwenden
 
Zitat:

Zitat von Angel4585
In einer Protokoll Tabelle habe ich alle gelöschten Datensätze drin mit der Information der alten ID.
kann ich jetzt irgendwie den Datensatz aus der Protokolltabelle in die Haupttabelle schreiben, sodass dieser die gleiche ID wie davor hat?
Die ID wird automatisch mit Auto Inkrement erzeugt.

NEIN, das geht nicht.
Auto Inkrement Felder haben einen interen Generator (=Zähler), dem man von Aussen nicht verändern kann. (ausser durch Einfügen von neuen Datensätzen)
Es spielt übrigens auch überhaupt keine Rolle, ob nach Löschaktionen Lücken vorhanden sind.
Wenn du die Daten in einer bestimmten Reihenfolge sortiert haben möchtest,
dann muss man eben nach einen Datum/Zeit-Feld oder sonstigem Kriterium sortieren.

Wenn du Master-Detail Beziehungen hat, dann ist ein Auto Inkrement Feld nicht die richtige Technik.

himitsu 26. Mär 2007 09:56

Re: Gelöschten Datensatz wieder verwenden
 
Zitat:

In einer Protokoll Tabelle habe ich alle gelöschten Datensätze drin mit der Information der alten ID.
kann ich jetzt irgendwie den Datensatz aus der Protokolltabelle in die Haupttabelle schreiben
Klingt mir mehr danach, als wenn er glöschte Datensätze wiederherstellen will.

Mir war so, als wenn es z.B. bei mySQL geht, dann doch vermutlich auch hier?

jedenfalls wenn man da die DBs wiederherstellt, dann stimmen die Indizes in den Tabellen ja auch wieder, selbst wenn die Table mit 'nem Autoincrement-Index versehn ist. :gruebel:



Versuch doch einfach mal den Index im Insert/Update-Befehl mit anzugeben?

Ich vermute einfach mal, das der AutoIndex nicht geändert wird, wenn der angegebene Index unter diesem liegt und für den Eintrag auch der angegebene Index verwendet wird.

Angel4585 26. Mär 2007 10:31

Re: Gelöschten Datensatz wieder verwenden
 
Ne da kommt das das Feld nicht beschrieben werden kann, bzw bei nem SQL-Statement:"Die Operationen INSERT und UPDATE werden bei Feldtyp Autoinkrement nicht unterstützt." :(

hoika 26. Mär 2007 16:59

Re: Gelöschten Datensatz wieder verwenden
 
Hallo,

korrekt,
in DBase könnte man das ev. noch machen,
weil ja nur ein "deleted" Flag gesetzt wird.
Paradox löscht die Daten aber physisch.
Abhilfe könnte ein DbiDoRestructure mit Ändern des AutoInc
nach Integer, einfügen und wieder zurücksetzen auf AutoInc bringen,
aber davor würde ich doch gleich ne neue DB nehmen ;)

Das DbiDoRestructure klappt übrigens nur Exclusiv,
also darf zu diesem Zeitpunkt kein anderer in der Tabelle sein.


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz