Mysql 插入后更新已读/未读表

Mysql 插入后更新已读/未读表,mysql,database,foreign-keys,Mysql,Database,Foreign Keys,我正在尝试创建一个单独的表来跟踪已读/未读的帖子。使用MySQLi我将有两个表items和items\u tracking。当呈现页面时,它将连接表并检查用户是否阅读文章 items +-------+------------+----+ | id | created_by | .. | +-------+------------+----+ | item1 | id12 | .. | | item2 | id433 | .. | +-------+---------

我正在尝试创建一个单独的表来跟踪已读/未读的帖子。使用
MySQLi
我将有两个表
items
items\u 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
表中创建新的item/post时,它也会在
items\u tracking
表中为所有用户创建列
read=0
。问题是,我不知道如何解决这个问题,因为我在
items\u 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\u id不为NULL
以查看在
items\u tracking

Gah中是否有记录,您是对的!我沉浸在这个问题中,想不出这么简单的解决办法。但是,如果您只想列出未读的项目呢。如何仅选择/显示在
items\u tracking
表中不存在对应项的项目?我想我可以通过在
items
表上执行
SELECT
来解决这个问题,然后对每个项目执行另一个
SELECT
来找出
items\u tracking
表中是否存在一行,如果不存在,我甚至不会渲染它。正确吗?
选择。。。“从项目”中,我将“连接项目”跟踪t打开(t.item\u id=i.id),其中t.item\u id为空