我需要在 MySQL 中自动递增一个非主键字段

发布于 2024-07-27 20:44:41 字数 219 浏览 2 评论 0原文

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

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

遇到这种情况通常该怎么办?

谢谢!

Right now, I have a table whose primary key is an auto_increment field. However, I need to set the primary key as username, date (to ensure that there cannot be a duplicate username with a date).

I need the auto_increment field, however, in order to make changes to row information (adding and deleting).

What is normally done with this situation?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

素年丶 2024-08-03 20:44:41

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

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

或者,您可以尝试

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

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

Just set a unique index on composite of (username, date).

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

Alternatively, you can try to

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

and I think in the latter case you need those columns to be declared NOT NULL.

り繁华旳梦境 2024-08-03 20:44:41

我知道这是老问题,这就是我解决问题的方法 -

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

I know this is old question, here is how i solved the problem -

ALTER TABLE `student_info` ADD `sn` INT(3) UNIQUE NOT NULL AUTO_INCREMENT FIRST         
月下伊人醉 2024-08-03 20:44:41

使用类似的内容:

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

如果您已经有了表,并且只想添加唯一约束
用户+日期,运行

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

Use something like:

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

If you already have the table, and just want to add a unique constraint on
user+thedate, run

ALTER TABLE users  ADD UNIQUE KEY user_date_idx (user,  thedate);
嘿哥们儿 2024-08-03 20:44:41

将当前主键更改​​为唯一键:

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

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

ALTER TABLE table ADD UNIQUE KEY(id);

Change your current primary key to be a unique key instead:

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

The auto_increment will function normally after that without any problems. You should also place a unique key on the auto_increment field as well, to use for your row handling:

ALTER TABLE table ADD UNIQUE KEY(id);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文