php - 在多个表中处理/插入 ID。 (基础论坛)

标签 php mysql sql

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

首先,我有一个 posts 表,并且有一个 post_idtopic_id 列。

但是,在另一边我有一个主题表。 在 topics 表中,我还有一个 last_post_idtopic_id !

所以它们互相引用。

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

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

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

  2. 插入帖子数据(文本、用户名...、topic_id),并检索该特定的 post_id

  3. 使用检索到的 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/

相关文章:

mysql - 如何解决 Doctrine 中出现的异常(exception)(Symfony 4)?

c# 你的 SQL 语法有错误

mysql - 替换 mysql-href 中的字符串

sql - DB2 sql group by/count 不同的列值

php - Laravel lmutator $this->属性返回 'Undefined index: id'

php - SQL INSERT INTO 表(a, b , c) 值 ( :a, :b, :c, SELECT ...)

php - 更新 Twig 中的对象属性

php - 如何访问 laravel 查询结果中的列

MySQL:组函数的使用无效

sql - 如何在 SQL 中返回具有重复非唯一查询值的多行?