我需要在MySQL中auto_increment一个不是主键的字段

时间:2009-07-20 00:44:13

标签: mysql primary-key auto-increment

现在,我有一个表,其主键是auto_increment字段。但是,我需要将主键设置为usernamedate(以确保没有重复的用户名和日期)。

但是,我需要auto_increment字段才能更改行信息(添加和删除)。

这种情况通常会做什么?

谢谢!

4 个答案:

答案 0 :(得分:19)

只需在(用户名,日期)的合成上设置唯一索引。

ALTER TABLE `table` ADD UNIQUE INDEX `name` (`username`, `date`);

或者,您可以尝试

ALTER TABLE `table` DROP PRIMARY KEY, ADD PRIMARY KEY(`username`,`date`);

我想在后一种情况下你需要将这些列声明为NOT NULL。

答案 1 :(得分:2)

我知道这是一个老问题,这就是我如何解决问题 -

ALTER TABLE `student_info` ADD `sn` INT(3) UNIQUE NOT NULL AUTO_INCREMENT FIRST         

答案 2 :(得分:1)

将您当前的主键更改为唯一键:

ALTER TABLE table DROP PRIMARY KEY, ADD UNIQUE KEY(username,date);

auto_increment将在此之后正常运行,没有任何问题。您还应该在auto_increment字段上放置一个唯一键,以用于行处理:

ALTER TABLE table ADD UNIQUE KEY(id);

答案 3 :(得分:1)

使用类似:

CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  user VARCHAR(32) NOT NULL,
  thedate DATE NOT NULL,
  UNIQUE(user,thedate)
);

如果您已经拥有该表,并且只想添加一个唯一约束 用户+ thedate,运行

ALTER TABLE users  ADD UNIQUE KEY user_date_idx (user,  thedate);