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