Id处理/插入多个表。 (基础论坛)

时间:2012-02-26 23:12:19

标签: php mysql sql

所以我开始写一个论坛,因为我想学习一点SQL(MySQL)。

首先,我有一个帖子表格,并且有一个post_idtopic_id列。

但另一方面,我有一个主题表。 在主题表格中,我也有last_post_idtopic_id

所以他们互相引用。

所以问题是:当用户创建主题(同时写第一篇文章)时,如何有效地插入这些id?

因为现在我必须执行以下步骤:

  1. 插入主题相关数据(主题标题..等等,插入last_post_id = 0因为我在这里不知道这个值),然后检索topic_id

  2. 插入帖子数据(文字,用户名..,topic_id),并解除此特定帖子

  3. 更新 主题表,其中包含检索到的post_id(设置为last_post_id)。
  4. 不是太长,乏味,无效......?

    感谢您的时间。我的英语不是最好的... sry。

2 个答案:

答案 0 :(得分:2)

你可以使用单一交易来完成,但基本思路是一样的。您需要在topic_id之前插入新主题,并且需要在last_post_id之前插入新帖子。使用当前的表格,没有办法解决这个问题。

您还可以使用TRIGGERlast_post_id添加新记录时自动更新posts字段。这不会改变执行的查询数量,但它本身将由MySQL本身透明地处理。

另外,关于将last_post_id设置为NULL的答案,mu提出的观点太短了。

答案 1 :(得分:0)

last_post_id没有意义,只是额外的工作。相反,您应该在需要时动态地抓取特定主题的最后一篇文章。没有理由将它存储在数据库中。

关于主题/帖子,正常的过程是创建主题(如果它不存在),获取创建的ID,并插入包含该主题ID的新帖子,就像你说的那样。