所以我开始写一个论坛,因为我想学习一点SQL(MySQL)。
首先,我有一个帖子表格,并且有一个post_id
和topic_id
列。
但另一方面,我有一个主题表。
在主题表格中,我也有last_post_id
和topic_id
!
所以他们互相引用。
所以问题是:当用户创建主题(同时写第一篇文章)时,如何有效地插入这些id?
因为现在我必须执行以下步骤:
插入主题相关数据(主题标题..等等,插入last_post_id = 0因为我在这里不知道这个值),然后检索topic_id
插入帖子数据(文字,用户名..,topic_id),并解除此特定帖子
last_post_id
)。不是太长,乏味,无效......?
感谢您的时间。我的英语不是最好的... sry。
答案 0 :(得分:2)
你可以使用单一交易来完成,但基本思路是一样的。您需要在topic_id
之前插入新主题,并且需要在last_post_id
之前插入新帖子。使用当前的表格,没有办法解决这个问题。
您还可以使用TRIGGER
在last_post_id
添加新记录时自动更新posts
字段。这不会改变执行的查询数量,但它本身将由MySQL本身透明地处理。
另外,关于将last_post_id
设置为NULL
的答案,mu提出的观点太短了。
答案 1 :(得分:0)
last_post_id没有意义,只是额外的工作。相反,您应该在需要时动态地抓取特定主题的最后一篇文章。没有理由将它存储在数据库中。
关于主题/帖子,正常的过程是创建主题(如果它不存在),获取创建的ID,并插入包含该主题ID的新帖子,就像你说的那样。