Kuno: mysql: Primärschlüssel wechseln

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?

  1. 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

    --
    Das Böse ist grau ... color:#666;
    1. "incorrect table definition; there can be only one auto column and it must be defined as a key"

      1. 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

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. weil in meinem Fall zwei Spalten einen eindeutigen Datensatz ergeben. Der erste (ID) ist nicht einmalig. Nur die Kombination aus zwei, darf einmalig sein.

          1. 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

            --
            -------------------
            There's no such thing as a free lunch  --  Milton Friedman
            1. 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.

              1. 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

                1. 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 )

          2. 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

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

    2. Ausserdem funktioniert das noch nichtmal:

      ALTER TABLE tbl ADD PRIMARY KEY (user_id, remote_id)