现在,我有一个表,其主键是auto_increment
字段。但是,我需要将主键设置为username
,date
(以确保没有重复的用户名和日期)。
但是,我需要auto_increment
字段才能更改行信息(添加和删除)。
这种情况通常会做什么?
谢谢!
答案 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);