我不知道标题是否是我想解释的,我的英语水平很低。但是我向自己解释:我有一个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。
我该如何处理这件事?
提前谢谢你!
发布于 2010-12-12 23:11:08
通常情况下,您的auto_increment字段也是您的主键,但它不是必须的。您可以将主键设置为复合索引(多列)。然后,自动递增将从第一列开始递增,给出您正在查找的内容。但是,您的表没有包含与新闻项相关的id,您需要该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开始。
发布于 2010-12-12 22:56:48
首先,将您唯一的数字存储在与id不同的字段中。例如,具有UNIQUE(id_new, uid)约束的uid INT。id现在是,也应该一直是一个自动递增的标识符字段,因为它将使您的工作变得更容易(例如,您可以只使用一个标识符而不是两个标识符来访问您的评论)。
最简单的做法是保留已删除的注释(使用is_deleted字段),并使用MAX()查找到目前为止为给定is_new分配的最大标识符。
另一种可能是在news表本身中跟踪以前分配的uid,但这涉及到更多的工作,并为每个新注释进行额外的更新。
https://stackoverflow.com/questions/4422219
复制相似问题