所以我开始写一个论坛,因为我想学习一点SQL(MySQL)。
首先,我有一个 posts 表,并且有一个 post_id
和 topic_id
列。
但是,在另一边我有一个主题表。
在 topics 表中,我还有一个 last_post_id
和 topic_id
!
所以它们互相引用。
所以问题是:当用户创建主题(同时编写第一篇文章)时,如何有效地插入这些 id?
因为现在我必须执行以下步骤:
插入主题相关数据(主题标题等,插入last_post_id =0,因为我不知道这里的这个值),然后检索topic_id
插入帖子数据(文本、用户名...、topic_id),并检索该特定的 post_id
- 使用检索到的 post_id 更新 topics 表(设置
last_post_id
)。
是不是太长、乏味、无效……?
感谢您的宝贵时间。我的英语不是最好的..抱歉。
最佳答案
您可以使用单个事务来完成此操作,但基本思想是相同的。您需要在拥有 topic_id
之前插入新主题,并且需要在拥有 last_post_id
之前插入新帖子。对于您当前的表格,没有办法解决这个问题。
您还可以使用TRIGGER
当新记录添加到 posts
时,会自动更新 last_post_id
字段。这不会改变执行的查询数量,但它会由 MySQL 本身透明地处理。
此外,mu 提出的关于将 last_post_id
设置为 NULL
是个好主意的答案太短了。
关于php - 在多个表中处理/插入 ID。 (基础论坛),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9458206/