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作为外键. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |