Autor Beitrag
Morpheus1572
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: So 10.02.08 17:37 
Moin,

zu dem Thema habe ich hier schon was gefunden aber eher zu Paradox...

Also was mein Problem ist:

Wenn ich eine Tabelle leere und sie dann wieder fülle, wird der Index (Autoincrement) weitergeführt von dem letzten gebrauchten. Das ist nicht mein Ziel. wenn ich die Tabelle leere dann möchte ich auch den index auf 1 haben.

Genauso verhält es sich, wenn ich aus einer Tabelle verschieden Sätze entferne. Ich möchte dann auf Knopfdruck erreichen, das die Indizes entsprechend reorganisiert werden. ist das machbar und wenn ja wie?

Lieben dank an eure Mithilfe schon mal vorweg. ;-)

Gruß Morpheus1572
Agawain
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 460

win xp
D5, MySQL, devxpress
BeitragVerfasst: Mo 11.02.08 14:46 
Moin,

user profile iconMorpheus1572 hat folgendes geschrieben:
Moin,
Wenn ich eine Tabelle leere und sie dann wieder fülle, wird der Index (Autoincrement) weitergeführt von dem letzten gebrauchten. Das ist nicht mein Ziel. wenn ich die Tabelle leere dann möchte ich auch den index auf 1 haben.


In diesem Fall Tabellenstruktur kopieren, dann fängst wieder bei 1 an. Alte Tabelle löschen.

user profile iconMorpheus1572 hat folgendes geschrieben:

Genauso verhält es sich, wenn ich aus einer Tabelle verschieden Sätze entferne. Ich möchte dann auf Knopfdruck erreichen, das die Indizes entsprechend reorganisiert werden. ist das machbar und wenn ja wie?



In diesem Fall Tabellenstrukur und Daten kopieren. Der Autoincrement-Wert wird nicht mitkopiert, sondern neu aufgebaut.

_________________
Gruß Aga
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 11.02.08 15:08 
Warum ist es für dich wichtig, welche Werte die Inidzes haben? Sie dienen lediglich der Datenbank dazu eine Datensatz eindeutig zu identifizieren. Für den Benutzer der Datenbank sind sie ohne bedeutung und daher ist deren Wert egal.
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Mo 11.02.08 15:19 
Ich sehs wie Luckie. Wenn du die Tabelle leerst, musst du die DB komprimieren, damit der Autowert wieder bei 1 beginnt.

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
Morpheus1572 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: Mo 11.02.08 18:55 
Danke Leutz,

warum es mir wichtig ist? naja, nennt mich spießig aber ich habe keine lust irgendwann mal nen index von 63214 zu haben, tatsächlich aber nur 2500 datensätze und so...
war auch nur ne frage.

@ene:
heißt das, dass beim komprimieren die indizes automatisch neu vergeben werden? oder was passiert dabei genau?

Gruß
Morph
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Di 12.02.08 11:20 
Ja, der Index wird neu vergeben, beginnend beim kleinsten Wert. Wenn dort also 2500 steht, wärs 2501. Wenn kein Datensatz vorhanden ist, halt 1.

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 13.02.08 09:02 
user profile iconMorpheus1572 hat folgendes geschrieben:
warum es mir wichtig ist? naja, nennt mich spießig aber ich habe keine lust irgendwann mal nen index von 63214 zu haben, tatsächlich aber nur 2500 datensätze und so...
Und jetzt stell dir vor, du arbeitest mit einer richtigen Datenbank, wo die Tabellen über den Index referenzieren. Wenn du nun eine Tabelle reorganisierst, sind alle Referenzen zu dieser Tabelle im A.... äh Eimer. Das zu reparieren, ist fast unmöglich.
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Mi 13.02.08 09:11 
user profile iconjasocul hat folgendes geschrieben:
Und jetzt stell dir vor, du arbeitest mit einer richtigen Datenbank, wo die Tabellen über den Index referenzieren. Wenn du nun eine Tabelle reorganisierst, sind alle Referenzen zu dieser Tabelle im A.... äh Eimer. Das zu reparieren, ist fast unmöglich.


Naja da du nen keinen Toyota fährst, kann man das sagen, ansonsten ist nichts unmöglich ;) Wobei ich dir recht gebe, referentielle Integrität sollte immer verwendet werden.

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 13.02.08 09:23 
user profile iconene hat folgendes geschrieben:
Naja da du nen keinen Toyota fährst
Du meinst jetzt nicht mich, oder? Ich nutze hauptsächlich Oralce.

user profile iconene hat folgendes geschrieben:
, kann man das sagen, ansonsten ist nichts unmöglich ;) Wobei ich dir recht gebe, referentielle Integrität sollte immer verwendet werden.
Ich schrieb "fast unmöglich". Wenn das DB-Design absolut fehlerfrei ist, kann man eine Reorganisation vielleicht machen. Aber was ist schon fehlerfrei. :twisted:
ene
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: Mi 13.02.08 09:24 
user profile iconjasocul hat folgendes geschrieben:
user profile iconene hat folgendes geschrieben:
Naja da du nen keinen Toyota fährst
Du meinst jetzt nicht mich, oder? Ich nutze hauptsächlich Oralce.


Doch, aber es ist ja auch nicht das Orakel von Delphi :mrgreen:

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
Blawen
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 616
Erhaltene Danke: 33

Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
BeitragVerfasst: Mi 13.02.08 23:17 
user profile iconMorpheus1572 hat folgendes geschrieben:
Wenn ich eine Tabelle leere und sie dann wieder fülle, wird der Index (Autoincrement) weitergeführt von dem letzten gebrauchten. Das ist nicht mein Ziel. wenn ich die Tabelle leere dann möchte ich auch den index auf 1 haben.
Ich kenne Access leider nicht, bzw. zuwenig. Geht der SQL-Weg nicht?
--> Truncate Table XY

_________________
Es kompilert, wir können ausliefern.
Und es kompiliert wieder - das Update ist fertig - bitte 100 Euro ;-)
PC-John
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 14.02.08 23:05 
user profile iconMorpheus1572 hat folgendes geschrieben:

warum es mir wichtig ist? naja, nennt mich spießig aber ich habe keine lust irgendwann mal nen index von 63214 zu haben, tatsächlich aber nur 2500 datensätze und so...

Also dieses Problem kratzt bestenfalls einen Anfänger.

Dieser Autoincrement-Zähler im primary-Key-Feld hat schon seinen Berechtigungsgrund.
Die übrigen (alles Sekundär-) Indexe können sich dann nicht mehr überwerfen, selbst wenn identische Einträge in indexierten Feldern stehen.

Dieser Primary-Key hat einen Werte-Vorrat von 1 bis 2hoch31, das sollte bis ans Ende jeglicher PC-gestützten Datenbank reichen.

Wenn ums verr.... der Zähler wieder mal bei 1 beginnen muss:
Die Daten hinausschreiben in ein Array, die Tabelle löschen (drop table, nicht nur ein empty table) und die Tabelle neu errichten,
danach das Array wieder einlesen.

Aber eine Referenz-Integrität ist dann meist zum Teufel, wegen der "schöneren" Tabelle halt.
Morpheus1572 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: Fr 15.02.08 22:18 
@pcjohn

okay, okay, okay ;-)

habe es verstanden. dann lass ich das eben. ist ja auch nicht lebensnotwendig. hatte mich eben nur interessiert. aber wenn es so ist wie du sagtes ist es ja auch okay. ich bin immer gern bereit was dazu zu lernen.

LG
Morpheus1572
Blawen
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 616
Erhaltene Danke: 33

Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
BeitragVerfasst: Sa 16.02.08 00:36 
user profile iconMorpheus1572 hat folgendes geschrieben:
..aber wenn es so ist wie du sagtes ist es ja auch okay. ich bin immer gern bereit was dazu zu lernen...
Irgendwie sehe ich mehrer Postings, welche Dich darauf hinweisen - Du brauchst aber viel Überzeugungsarbeit :lol: ;-)

_________________
Es kompilert, wir können ausliefern.
Und es kompiliert wieder - das Update ist fertig - bitte 100 Euro ;-)
Morpheus1572 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: Mo 18.02.08 07:16 
Naja, ich höre mir halt gerne an was die Menge zu sagen hat. ;-)

Nein im ernst: ich danke euch allen. fühle mich hier gut aufgehoben! Ihr seid klasse.

Bis zum nächsten Problem

Morph