Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Autoinc in Datenbankoberfläche nachträglich ergänzen (https://www.delphipraxis.net/40029-autoinc-datenbankoberflaeche-nachtraeglich-ergaenzen.html)

Plague 10. Feb 2005 06:23

Datenbank: Paradox • Version: 7 • Zugriff über: Query Komponente

Autoinc in Datenbankoberfläche nachträglich ergänzen
 
Hallo,

ich möchte meine Paradox 7 Datenbank nachträglich mit einem Autoinc ergänzen (also dass die ID automatisch vergeben wird) wie kann ich das machen? Oder kann ich das mit Delphi auch mit igendeinem Code?

Gruß
Thomas

shmia 10. Feb 2005 10:30

Re: Autoinc in Datenbankoberfläche nachträglich ergänzen
 
Zitat:

Zitat von Plague
ich möchte meine Paradox 7 Datenbank nachträglich mit einem Autoinc ergänzen (also dass die ID automatisch vergeben wird) wie kann ich das machen? Oder kann ich das mit Delphi auch mit igendeinem Code?

Ich möchte dir von der Verwendung von AutoInc Feldern abraten. :warn:
Im ersten Augenblick sind die Felder ja sehr bequem.
Aber es kann z.B. ein Zustand eintreten, bei dem du nichts mehr in die Tabelle speichern kannst.

Ein Datensatz mit dem AutoInc-Wert 33000 wird gespeichert, aber durch einen Absturz wird der
verborgene Generatorwert des AutoInc Feldes nicht auf 33001 aktualisiert.
Die Tabelle ist zerschossen und kann nur mit Mühe repariert werden.


Ein weiteres Problem:
Die "Datenbank" Paradox kennt den Wert des AutoInc Feldes nach einer Einfügung, aber dein
Programm nicht!
Deshalb werden weitere Einfügungen, die mit der letzten Einfügung in Beziehung stehen sehr problematisch.

Plague 10. Feb 2005 12:08

Re: Autoinc in Datenbankoberfläche nachträglich ergänzen
 
Aber wie kann ich dann den Indexfehler (der ja wohl durch die nichtzugewiesene ID liegt) beheben?

Gruß
Thomas

eddy 10. Feb 2005 14:15

Re: Autoinc in Datenbankoberfläche nachträglich ergänzen
 
Hallo Plague,

ich stimme mit shmia nicht überein. Nutze für den Primärindex ruhig ein AutoInc-Feld (z.B. ID).
Macht sich eigentlich immer gut.

Einfügen kannst Du es per Hand über die Datenbankoberfläche.

Was die Probleme bei Datenbankfehlern betrifft:
Mit TUTIL32.DLL läßt sich ein Reparatur-Tool schaffen. Für das von shmia beschriebene Beispiel sollte es da gar kein Problem geben. Zu Problemen kann es allerdings kommen, wenn Du den Wert des Feldes ID zum Verbinden mehrerer Datenbanken verwendest AND (logische UND) eine Reparatur nur durch Umkopieren der Datenbank möglich ist. Da in diesem Fall ID neu aufgebaut wird, würde kein Verweis mehr stimmen.

Beispiel: Deine Auftrags-DB ist mit der Kunden-DB über das Feld ID gekoppelt. Nach o.g. Reparatur kommt es mit hoher Wahrscheinlichkeit zu Fehlern im Bezug zwischen Kunden- und Auftrags-DB.


Mit Code geht das ganze auch, auf Wunsch hinterleg' ich ihn noch.

mfg
eddy


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 Uhr.

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