mysql - 插入后更新已读/未读表

标签 mysql database foreign-keys

我正在尝试创建一个单独的表来跟踪已读/未读的帖子。使用 MySQLi 我将有两个表 itemsitems_tracking。当页面呈现时,它将连接表格并检查用户是否阅读了帖子。

items
+-------+------------+----+
|  id   | created_by | .. |
+-------+------------+----+
| item1 | id12       | .. |
| item2 | id433      | .. |
+-------+------------+----+

items_tracking
+---------+---------+------+
| user_id | item_id | read |
+---------+---------+------+
| id1     | item1   |    0 |
| id2     | item2   |    0 |
| id94    | item1   |    1 |
+---------+---------+------+

现在的想法是,每当在 items 表中创建新项目/帖子时,它也会在 items_tracking 表中为所有用户创建行并包含列读取= 0。问题是,我不知道如何解决这个问题,因为我在 items_tracking 中使用的外键仍然几乎未确定。

关于如何在第二个表引用第一个表时同时插入两个表,有什么想法吗?

最佳答案

您不需要跟踪表中 read=0 的记录。

SELECT ..., t.read FROM items i LEFT JOIN items_tracking t ON (t.item_id = i.id)

即使items_tracking中没有相应的记录,该查询也会起作用;在这种情况下,结果中的 t.read 将为 NULL。您只需要使用 read = 1 插入记录,尽管您甚至不需要这个标志,但您可以测试 t.item_id IS NOT NULL 来查看是否有items_tracking 中的一条记录。

关于mysql - 插入后更新已读/未读表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10768879/

相关文章:

mysql - 将我的数据库结果更改为 JSON

mysql - 琐碎算术计算的数据库优化

mysql - 是否可以在RDS中创建多源只读副本

mysql - 如何从我的 MySQL 表中删除约束?

mysql - MySQL 无法查询

mysql - 获取最近一小时、最近 2 小时.....最近 n 小时的记录

sql - Teradata SQL : insert random data for testing into Table

php - 为其他 DBMS 分层 PHP 应用程序

mysql - 由于外键约束无法插入 - mysql

android - 你能在你的android上升级sqlite3版本吗?