mysql: Primärschlüssel wechseln
Kuno
- datenbank
Habe derzeit ID als Primärschlüssel festgelegt.
Nun will ich den Primärschlüssel aber auf zwei Spalten anwenden:
nämlich auf ID und NAME.
Weiss jemand, wie ich den Primärschlüssel ändern kann?
echo ($light == true) ? 'Guten Tag,' : 'Guten Abend,';
indem du den alten Key zuerst entfernst (ALTER TABLE x DROP PRIMARY KEY;) und dann den neuen hinzufügst (ALTER TABLE x ADD PRIMARY KEY ('y');).
Grüße
Markus
"incorrect table definition; there can be only one auto column and it must be defined as a key"
Hi,
Habe derzeit ID als Primärschlüssel festgelegt.
Nun will ich den Primärschlüssel aber auf zwei Spalten anwenden:
nämlich auf ID und NAME.
"incorrect table definition; there can be only one auto column and it must be defined as a key"
Die Spalte ID sorgt also bereits dafür, daß die Werte eindeutig sind.
Welchen Sinn hat es dann, in den Primary Key noch weitere Spalten aufzunehmen?
Wenn das auto_increment die Entfernung des Primary key verhindert, muß eben erst diese Eigenschaft entfernt werden.
cu,
Andreas
weil in meinem Fall zwei Spalten einen eindeutigen Datensatz ergeben. Der erste (ID) ist nicht einmalig. Nur die Kombination aus zwei, darf einmalig sein.
Hello,
weil in meinem Fall zwei Spalten einen eindeutigen Datensatz ergeben. Der erste (ID) ist nicht einmalig. Nur die Kombination aus zwei, darf einmalig sein.
das ist technisch bei einem Autowert nicht möglich, außer du missbrauchst ihn und setzt explizit Werte in der Spalte ein. Ansonsten halte dich an MudGuards Tipp: entferne zunächst die AutoIncrement Eigenschaft, dann kannst du den Key ändern.
MfG
Rouven
Wieso redet hier eigentlich jeder von Auto Increment? Sowas habe ich nicht.
Meine Tabelle sieht so aus:
user_id MEDIUMINT(8) UNSIGNED
remote_id MEDIUMINT(8) UNSIGNED
description TEXT NOT NULL
Ich möchte nun, dass user_id und remote_id die Primärschlüssel sind da ich irgendwie nicht einsehe, eine eindeutige ID-Spalte anzulegen die ich später nicht benutze.
Hallo
Wieso redet hier eigentlich jeder von Auto Increment? Sowas habe ich nicht.
Du hast das selbst ins Spiel gebracht: https://forum.selfhtml.org/?t=161921&m=1053340:
"incorrect table definition; there can be only one auto column and it must be defined as a key"
user_id MEDIUMINT(8) UNSIGNED
remote_id MEDIUMINT(8) UNSIGNED
description TEXT NOT NULL
dann hältst Du Informationen zurück. Wenn das hier Deine Tabellendefinition ist,
dann kommt nicht die von Dir angeführte Fehlermeldung.
Freundliche Grüße
Vinzenz
Der bereits gegebene Tipp ist korrekt:
ALTER TABLE test
DROP PRIMARY KEY ,
ADD PRIMARY KEY ( user\_id
, remote\_id
)
Wenn du noch überhaupt keinen Key hast /weil der vielleicht schon gelöscht ist dann
ALTER TABLE test
ADD PRIMARY KEY ( user\_id
, remote\_id
)
Hello Kuno,
weil in meinem Fall zwei Spalten einen eindeutigen Datensatz ergeben. Der erste (ID) ist nicht einmalig. Nur die Kombination aus zwei, darf einmalig sein.
Du hast vorhin eine Fehlermeldung zitiert, die eindeutig daraf hinweist, dass das nicht geht:
"incorrect table definition; there can be only one auto column and it must be defined as a key"
Also ist die ID-Spalte bereits Schlüsselspalte.
Ist sie denn auch Primary Key?
Du solltest das Tabellendesign vielleicht mal abfragen
SHOW CREATE TABLE tablename
;
wenn Du nicht mehr genau weißt, was Sache ist.
Außerdem können Dir Deine Informationen verloren gehen, wenn Du nicht aufpasst, was Du machst. Oder sind noch keine "vernünftigen" Daten drin in der Datenbank?
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Ausserdem funktioniert das noch nichtmal:
ALTER TABLE tbl ADD PRIMARY KEY (user_id, remote_id)