首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于引用某些内容的注释表的唯一ID的MySQL和PHP

用于引用某些内容的注释表的唯一ID的MySQL和PHP
EN

Stack Overflow用户
提问于 2010-12-12 22:50:23
回答 2查看 162关注 0票数 0

我不知道标题是否是我想解释的,我的英语水平很低。但是我向自己解释:我有一个MySQL表来存储我的新闻表的评论:

代码语言:javascript
复制
news_comments:

id INT, AI
id_new INT
name VARCHAR
comment TEXT

但我希望每个新的评论都有一个唯一的数字。所以对于id_new=1,我有一个#1,#2,#3...然后id_new=2另一个#1,#2,#3。

如果我从id_new=1中删除评论#1,#2将保持#2,下一个评论(如果存在#2和#3)将是#4。如果#4被删除,新评论将是#5。

我该如何处理这件事?

提前谢谢你!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-12 23:11:08

通常情况下,您的auto_increment字段也是您的主键,但它不是必须的。您可以将主键设置为复合索引(多列)。然后,自动递增将从第一列开始递增,给出您正在查找的内容。但是,您的表没有包含与新闻项相关的id,您需要该id才能做到这一点。

代码语言:javascript
复制
CREATE TABLE news_comments (
news_id INT,
comment_id INT AUTO_INCREMENT,
name VARCHAR, comment TEXT,
PRIMARY KEY commment_key (news_id, comment_id)
);

如果news_id为1,则comment_id将从该值开始递增,并且对于每个唯一的news_id将从1开始。

票数 1
EN

Stack Overflow用户

发布于 2010-12-12 22:56:48

首先,将您唯一的数字存储在与id不同的字段中。例如,具有UNIQUE(id_new, uid)约束的uid INTid现在是,也应该一直是一个自动递增的标识符字段,因为它将使您的工作变得更容易(例如,您可以只使用一个标识符而不是两个标识符来访问您的评论)。

最简单的做法是保留已删除的注释(使用is_deleted字段),并使用MAX()查找到目前为止为给定is_new分配的最大标识符。

另一种可能是在news表本身中跟踪以前分配的uid,但这涉及到更多的工作,并为每个新注释进行额外的更新。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4422219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档