![]() |
Datenbank: ABS • Version: 488 • Zugriff über: Datascore
automatisch ein Primärschlüsselfeld erzeugen?
Wie kann man beim Erstellen einer Tabelle erreichen, das automatisch ein Feld als Primärschlüsselfeld erzeugt wird.
|
Re: automatisch ein Primärschlüsselfeld erzeugen?
Wozu soll denn das gut sein ? :shock: Ich würde mich jedenfalls herzlichst bedanken, wenn die DB mir einfach so Felder anlegt. :mrgreen:
|
Re: automatisch ein Primärschlüsselfeld erzeugen?
Zitat:
|
Re: automatisch ein Primärschlüsselfeld erzeugen?
Hi smart,
warum erstellt deine Freundin denn immer neue Tables? Ober vergisst sie den Schlüssel beim einfügen eines Datensatzes? Dafür gibts ja dann die Funktion Auto-Increment. Gruß Christian |
Re: automatisch ein Primärschlüsselfeld erzeugen?
Zitat:
Gruß Heike. |
Re: automatisch ein Primärschlüsselfeld erzeugen?
Was Du jetzt meinst, das ist ein zusammengesetzter Schlüssel. Der setzt sich aber normalerweise aus zwei unabhängigen Primary Keys der beiden Tabellen zusammen usw. usf. Oder ist das Thema nur : "Frauen und Technik" :mrgreen:
|
Re: automatisch ein Primärschlüsselfeld erzeugen?
Zitat:
|
Re: automatisch ein Primärschlüsselfeld erzeugen?
Da kommen wir der Sache schon näher. Es geht also doch um die Werte ? Die sollte man ja auch nicht vom User eingeben lassen. Das Ganze hängt jetzt aber gewaltig von der DB ab. Bei Paradox ist das Autoincrement und ich verwende Trigger (IB/FB). Deine exotischen Sachen kenne ich jetzt allerdings nicht und muß passen.
|
Re: automatisch ein Primärschlüsselfeld erzeugen?
Zitat:
ja das ist möglich. Du mußt dann natürlich ein entsprechendes Feld in den abhängigen Tabllen haben. Felder können auch naträglich noch als PRIMARY KEY definiert werden. Wichtig ist nur, daß die Werte in dieser Spalte auch eindeutig sind. Daher ist AUTO INCREMENT für solche Felder immer die beste Wahl, wenn der Primärschlüssel "künstlich" sein soll, wie z. B. in einer User-Tabelle. Wenn Du ein Beispiel benötigst, so sage es mir einfach und ich stelle Dir hier etwas zur Verfügung. |
Re: automatisch ein Primärschlüsselfeld erzeugen?
Ich habe schon alles mögliche programmiert, aber mit so einer dummen Datenbankprogrammierung tue ich mich sehr schwer
Zitat:
Zitat:
|
Re: automatisch ein Primärschlüsselfeld erzeugen?
Zitat:
ALTER TABLE test_table PRIMARY KEY(id); Zitat:
|
Re: automatisch ein Primärschlüsselfeld erzeugen?
Vielen Dank Lars, für Deine umassende Antwort!
Noch eine dummer Frage, wie legt man einen Zitat:
Heike. |
Re: automatisch ein Primärschlüsselfeld erzeugen?
Hai Heike,
ersteinmal zum Verständniss: Ein Primaky Key ist ersteinmal "nur" ein Feld innerhalb einer Tabelle welches einen einmaligen Wert besitzt. Wie dieser erzeugt wird ist ersteinmal egal. Du kannst eine GUID verwenden oder irgendetwas von dem Du sicherstellst das es einmalig ist in der Tabelle. Vorzugsweise verwendet man dafür natürlich ein AutoInc-Feld. Es muss auch kein Index auf diesem Feld liegen. mySQL z.B. verlangt das auf dem AutoInc-Feld einer Tabelle (es darf nur eines geben) immer ein Index gelegt wird. ABS-Database ist das völlig egal. Wenn Du nun eine ABS-Tabelle hast in der schon Daten vorhanden sind solltest Du einfach ein ID-Feld (Typ AutoInc) hinzufügen können. Dieses wird dann automatisch gefüllt (in deinem Beispiel 1 bis 400). Wenn Du zwei Tabellen verknüpfen möchtest muss immer nur die Master Tabelle einen PK haben. Die Detail-Tabelle braucht nur ein Feld zur Verknüpfung mit dem PK aus der Mastertabelle (FOREIGN Key). |
Re: automatisch ein Primärschlüsselfeld erzeugen?
Zitat:
Ich glaube, jetzt habe ich es geschnallt. Ich könnte dann die erstellten ID-Feld (Typ AutoInc) miteinander verknüpfen, oder? Jetzt sag bitte nicht 'Falsch'. Heike. |
Re: automatisch ein Primärschlüsselfeld erzeugen?
Zitat:
ich sage nicht "Falsch" wenn Du es richtig meinst ;-) "Verknüpft" werden nicht die AutoInc-Felder sondern nur eines.
Code:
Wenn Du jetzt einen neuen Eintrag in der Tabelle namen machst wird in dem Feld "fk_anrede_id" (vom Typ Integer weil der PK auch in Integerfeld ist) der AutoInc-Wert aus der Tabelle anreden eingetragen.
Tabelle : anreden
--------------------------- anrede_ID : AutoInc <- Das ist ein PK in dieser Tabelle anrede_text : String(20) Tabelle : namen --------------------------- namen_id : AutoInc <- PK für diese Tabelle. Ist aber für diesen Fall nicht notwendig fk_anrede_id : INTEGER <- In diesem Feld wird der PK aus der Tabelle anreden gespeichert vorname : String(50) .... Das ganze kann dann so aussehen:
Code:
Ich hoffe jetzt ist es klarer?
Tabelle : anreden
--------------------------- anrede_id anrede_text --------------------------- 1 Herr 2 Frau 3 Fisch --------------------------- Tabelle : namen --------------------------------------- namen_id fk_anrede_id vorname --------------------------------------- 1 2 Heike 2 1 Stephan 3 2 Sharkyline 4 3 Sharky --------------------------------------- |
Re: automatisch ein Primärschlüsselfeld erzeugen?
Ich hatte früher mal etwas mit Clipper Programmiert, dass war so eine Art DBase. Wenn man da zwei Felder aus zwei Tabellen verlinken wollte, musst man immer das entsprechende Feld ‚indizieren’ und dann konnte man die ‚indizierten’ Felder verknüpfen.
Heike. |
Re: automatisch ein Primärschlüsselfeld erzeugen?
Zitat:
Zunächst vielen Dank für die sehr gute Antwort. Heike. |
Re: automatisch ein Primärschlüsselfeld erzeugen?
Zitat:
Kleiner Nachtrag (bevor Du fragen solltest). Um das eintragen des PKs im Feld fk_anrede_id musst Du dich natürlich selber kümmern. Das kann Dir keine Datenbank abnehmen. Zum Thema Indexe: Es ist natürlich immer sinnvoll auf den PK einen Index zu legen. Bei "richtigen" DBMS würde man auch noch auf das Feld fk_anrede_id einen FOREIGN KEY setzen. Je nach einstellung in der DB kann man so z.B. verhindern das ein Datensatz aus der Tabelle andrede gelöscht wird wenn es in der Tabelle namen noch abhängige Datensätze gibt. |
Re: automatisch ein Primärschlüsselfeld erzeugen?
Zitat:
Zitat:
Uff..., dass war jetzt aber eine schwere Geburt! Nochmal, herzlichen Dank für Deine nette Hilfe. Heike. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:15 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