2012-01-09 13 views
-1

mysqlのテーブルに別の主キーを追加します。 私はphpMyadminを使ってmysqlサーバと通信します。 私はそれが私にこのエラーを与える目的のフィールドのための主要なアイコンをクリックしてください:mysqlのテーブルに別の主キーを追加します。

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

編集:

はここにクエリです:

ALTER TABLE `files` DROP PRIMARY KEY ,ADD PRIMARY KEY (`file_type`) 

私はそれをどのように行うことができますか?

+0

もう1つのプライマリキーが必要なのはなぜですか? –

+0

プライマリキーは1つしか使用できませんが(複数の列を組み合わせても構いませんが)、達成したいことの具体例を示した場合、別の解決方法があります。 –

+0

@Shakti:重複したレコードを避けるために、3つの列の組み合わせが必要です。 –

答えて

6

「プライマリ」キーの名前によれば、そのうちの1つだけが存在する可能性があります(ハイランダーを参照)。

あなたが試してみたいと思うかもしれないものは、ほとんどの刺青のための主要なように機能するユニークキーです。 Auto_incrementは、2回目に使用された場合、どんな奇跡を果たしていないようです - 2つのフィールドのポイントがまったく同じ情報を持っている点は何ですか?

0

エラーメッセージには、次のように表示されます。

auto_increment列がキーである必要があります。

だから、最初にこのクエリを使用します。

ALTER TABLE 'files' CHANGE 'id' 'id' INT(10) UNSIGNED NOT NULL; 

これは、AUTO_INCREMENTを削除します。

また、私は他の答えで示唆されているUniqeキーをお勧めします。私は各テーブルに常に(ほとんど)ID列があるはずだと信じています。

3

あなたのケースでは、あなたが必要とするのはコンポジットキーです。この場合

CREATE TABLE track(
    album CHAR(10), 
    disk INTEGER, 
    posn INTEGER, 
    song VARCHAR(255), 
    PRIMARY KEY (album, disk, posn) 
) 

、私はあなたのテーブルの構造を知りませんが、ここhereから取られた一般的な例であり、あなたが必要とする重複レコードを避けるため3列の組合せがあります。あなたのシナリオを理解するのに間違いがあれば教えてください。

-1

既存のフィールドを含め、すべてのフィールドを主キーとしてマークすることができます。システムは内部的に既存のものを削除し、マークしたものすべてを設定します。

0

テーブルに対して一次キーを1回だけ与えることができます。重複するレコードを防ぐためにユニークキーを使用することができます

ALTER TABLE Persons ADD UNIQUE (P_Id)

関連する問題