MySQL和PHP用于引用某个注释表的唯一ID

时间:2010-12-12 14:50:23

标签: php mysql

我不知道标题是否正是我试图解释的,我的英语技能很低。但我自己解释一下:我有一个MySQL表来存储我的新闻表的评论:

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。

我如何管理?

提前谢谢!

2 个答案:

答案 0 :(得分:2)

首先,将您的唯一数字存储在与id不同的字段中。例如,uid INT的约束为UNIQUE(id_new, uid)id是并且应该保留一个自动递增的标识符字段,因为它会让您的生活更轻松(例如,您只能使用一个标识符而不是两个标识符来访问您的注释)。

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

另一种可能性是跟踪uid表本身中先前分配的news,但它涉及更多工作以及每个新评论的额外更新。

答案 1 :(得分:1)

通常你的auto_increment字段也是你的主键,但它不一定是。您可以将主键设为复合索引(多个列)。然后自动增量将从第一列开始递增,为您提供所需的内容。您的表格不包含与新闻项目相关的ID,您需要这样做才能执行此操作。

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开始。