現在、主キーがauto_increment
フィールドであるテーブルがあります。ただし、プライマリキーをusername
、date
に設定する必要があります(日付を含むユーザー名が重複しないようにするため)。
ただし、行情報を変更(追加および削除)するには、auto_increment
フィールドが必要です。
この状況では通常何が行われますか?
ありがとう!
(ユーザー名、日付)の複合に一意のインデックスを設定するだけです。
ALTER TABLE `table` ADD UNIQUE INDEX `name` (`username`, `date`);
別の方法として、
ALTER TABLE `table` DROP PRIMARY KEY, ADD PRIMARY KEY(`username`,`date`);
後者の場合、これらの列をNOT NULLとして宣言する必要があると思います。
私はこれが古い質問であることを知っています、これが私が問題をどのように解決したかです-
ALTER TABLE `student_info` ADD `sn` INT(3) UNIQUE NOT NULL AUTO_INCREMENT FIRST
次のようなものを使用してください:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
user VARCHAR(32) NOT NULL,
thedate DATE NOT NULL,
UNIQUE(user,thedate)
);
すでにテーブルがあり、user + thedateに一意の制約を追加するだけの場合は、次を実行します。
ALTER TABLE users ADD UNIQUE KEY user_date_idx (user, thedate);
代わりに、現在の主キーを一意のキーに変更します。
ALTER TABLE table DROP PRIMARY KEY, ADD UNIQUE KEY(username,date);
その後auto_incrementは問題なく機能します。行の処理に使用するには、auto_incrementフィールドにも一意のキーを配置する必要があります。
ALTER TABLE table ADD UNIQUE KEY(id);