加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – MySQL InnoDB AUTO_INCREMENT二级列

发布时间:2020-12-13 22:23:05 所属栏目:PHP教程 来源:网络整理
导读:我正在建立一个系统,用户可以上传他们想要的任何文件,而不是用它来执行任何类型的代码.作为其中的一部分,我重命名每个文件,并将其原始名称存储在 MySQL表中.此表包含上载它的用户的ID以及上载的唯一ID.目前我这样做: CREATE TABLE `uploads` ( `user_id` IN
我正在建立一个系统,用户可以上传他们想要的任何文件,而不是用它来执行任何类型的代码.作为其中的一部分,我重命名每个文件,并将其原始名称存储在 MySQL表中.此表包含上载它的用户的ID以及上载的唯一ID.目前我这样做:

CREATE TABLE `uploads` (
    `user_id` INT(11) NOT NULL,`upload_id` INT(11) NOT NULL AUTO_INCREMENT,`original_name` VARCHAR(30) NOT NULL,`mime_type` VARCHAR(30) NOT NULL,`name` VARCHAR(50) NOT NULL,PRIMARY KEY (`user_id`,`upload_id`)
) ENGINE=MyISAM;

这意味着我将始终拥有user_id和upload_id的唯一组合,并且每个用户首??次上传的ID都为1.但是我想为user_Id使用外键,因此如果删除用户,其上传也将被删除.这意味着我必须在InnoDB中完成.我将如何解决这个问题,因为上述设置仅适用于MyISAM.

我的用户表(我会得到user_id)看起来像这样:

CREATE TABLE `".DATABASE."`.`users` (
    `user_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,`username` VARCHAR(30) NOT NULL,`email` VARCHAR(50) NOT NULL,`password` CHAR(128) NOT NULL,`salt` CHAR(128) NOT NULL 
) ENGINE = InnoDB;

我想要的是上传表格如下所示:

user_id  | upload_id
1        | 1
1        | 2
2        | 1
2        | 2
2        | 3
1        | 3

如果这是有道理的

解决方法

如果我理解正确:

将主键替换为具有两个字段的唯一索引.然后将upload_id作为主键,将user_id作为外键.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读