![]() |
Datenbank: Access • Zugriff über: ADO
Nächsten Primärschlüsselwert holen
Moin an alle,
mein Primärschlüssel setzt sich aus zwei Attributen zusammen. ID(Zahl) und Sprache(Text) Da es sich hierbei um kein Autoinc-Feld handelt, muß ich zuerst den größten Wert aus der DB holen und 1 draufaddieren. Für Mehrbenutzersysteme ist das aber völlig ungeeignet. Was macht man dann ? Danke für Eure Antworten. Viele Grüße bioser |
Re: Nächsten Primärschlüsselwert holen
Zitat:
Wenn Du die Tabellenstruktur nicht ändern kannst, must Du mit einer Transaktion arbeiten. Dazu brauchst Du eine Hilfstabelle. Dessenungeachtet ist es Selbstmord, in einer Mehrbenutzerumgebung mit Access zu arbeiten, früher oder später fliegt dier die Access-DB um die Ohren, zerlegt sich, Datensätze gehen verloren etc. Schmeiss es auf den Müll und besorg Dir eine richtige DB. Gehe nicht auf den Kunden ein, wenn er sagt: 'Das soll aber so bleiben'. Es geht nicht. Access ist keine Mehrbenutzer-DB, es wäre gern eine, ist aber zu blöd. Punkt. Du wirst den Ärger bekommen. Tu Dir (und deinem Kunden) einen Gefallen und migriere zu: -MSSQL (Express, ist umsonst und wirklich gut) -Firebird (siehe oben) -PostGreSQL (oha!) Ich bin mit MSSQL gross geworden, also ist das 'meine' DB. Die anderen sind aber mindestens genau so gut. Und wirklich stabil. Und ca. mindestens 10x-100x schneller. |
Re: Nächsten Primärschlüsselwert holen
Jo, danke, ich habe einfach noch ne autoinc-Spalte hinzugefügt.
Nee, Access als Multiuser-DB hätte ich sowieso nicht genommen. |
Re: Nächsten Primärschlüsselwert holen
hi, ich habe gerade bemerkt, daß sich mein Problem noch nicht erledigt hat, weil die "ID" meines zusammengesetzten Schlüssels ja mehrfach auftritt und dann durch die Hinzunahme von "Sprache" eindeutig ist. Dann bringt mir auch eine weitere Spalte mit einem Autowert nichts,
weil ja eben die "ID" nicht von mir festgelegt werden soll. |
Re: Nächsten Primärschlüsselwert holen
Du hast also so eine Tabelle
So, jetzt hast Du also einen neuen Datensatz, sagen wir so:
Ich hoffe, Du weisst wenigstens die Sprache von dem neuen Datensatz. Dann würde ich mal vorschlagen, Du schmeisst die ID-Spalte weg und nimmst stattdessen die AutoInc-Spalte als ID-Feld. Falls Du verknüpfungen hast, musst Du die nur umbiegen. |
Re: Nächsten Primärschlüsselwert holen
hi, danke, das siehst Du richtig. Die Felder ID_wort und ID_sprache sind eindeutig.
ID_wort sollte normalerweise ein Autoinc-Wert sein, aber das ist nicht möglich, weil es mehrere gleiche ID_wort gibt. Hier meine Tabelle:
Code:
id_wort + id_sprache bilden den Primärschlüssel. Die Tabelle soll mir jeweils eine Übersetzung
id_wort id_sprache id_wort
1 de Hund 1 eng dog 2 de Katze 2 eng cat eines Wortes in eine andere Sprache liefern, was ja soweit auch möglich ist. id_wort soll aber generiert werden. Genau das ist mein Problem ! Oder sollte ich mir eine andere Tabellenstruktur überlegen ? |
Re: Nächsten Primärschlüsselwert holen
Ja:
Z.B. eine Tabelle 'Wort' und eine Tabelle 'Übersetzung' (vielleicht noch eine als 'Sprache')
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 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 by Thomas Breitkreuz