【发布时间】:2012-02-27 07:38:58
【问题描述】:
所以我开始写一个论坛,因为我想学一点SQL(MySQL)。
首先,我有一个 posts 表,并且有一个 post_id 和 topic_id 列。
但是,另一方面,我有一个 topics 表。
在 topics 表中,我也有一个 last_post_id 和 topic_id!
所以它们是相互引用的。
那么问题来了:当用户创建主题(同时写第一篇文章)时,如何有效地插入这些id??
因为现在我必须执行以下步骤:
插入主题相关数据(主题标题..等,插入last_post_id =0 因为我不知道这里的值),然后检索topic_id
插入帖子数据(文本、用户名..、topic_id),并检索这个特定的post_id
-
更新 topics表,使用检索到的post_id(设置
last_post_id)。
是不是太冗长、乏味、无效..?
感谢您的宝贵时间。我的英语不是最好的.. sry.
【问题讨论】:
-
您可以使用单个事务来完成,但基本思想是相同的。您需要在拥有
topic_id之前插入新主题,并且您需要在拥有last_post_id之前插入新帖子。使用您当前的表格,没有办法解决这个问题。 *编辑添加:您还可以使用TRIGGER,当新记录添加到posts时自动更新last_post_id字段。这不会改变执行的查询数量,但它会由 MySQL 本身透明地处理。 -
@MartinodF:你想把它写下来作为答案吗?当您发表评论时,我正在写几乎相同的东西(甚至是触发器!)。
-
@muistooshort 我已经把它作为答案发布了,也许有点晚了:) 你关于使用 NULL 的观点也是一个好主意!