| Autor |
Beitrag |
Morpheus1572
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: 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
      
Beiträge: 460
win xp
D5, MySQL, devxpress
|
Verfasst: Mo 11.02.08 14:46
Moin,
Morpheus1572 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.
Morpheus1572 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
|
Verfasst: 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
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: 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 
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: 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
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: 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
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mi 13.02.08 09:02
Morpheus1572 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
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Mi 13.02.08 09:11
jasocul 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
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mi 13.02.08 09:23
|
|
ene
      
Beiträge: 779
Erhaltene Danke: 1
Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
|
Verfasst: Mi 13.02.08 09:24
_________________ 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
      
Beiträge: 616
Erhaltene Danke: 33
Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
|
Verfasst: Mi 13.02.08 23:17
Morpheus1572 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
|
Verfasst: Do 14.02.08 23:05
Morpheus1572 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 
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: 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
      
Beiträge: 616
Erhaltene Danke: 33
Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
|
Verfasst: Sa 16.02.08 00:36
_________________ Es kompilert, wir können ausliefern.
Und es kompiliert wieder - das Update ist fertig - bitte 100 Euro
|
|
Morpheus1572 
      
Beiträge: 157
Win XP
Delphi 7
|
Verfasst: 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
|
|