在插入后更新读/未读表

时间:2012-05-26 18:46:24

标签: mysql database foreign-keys mysqli

我正在尝试创建一个单独的表来跟踪已读/未读帖子。使用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表中为所有用户和列read = 0创建行。问题是,我不知道如何解决这个问题,因为我在items_tracking中使用的外键仍然很不确定。

关于如何在两个表中同时插入插入的任何想法,而第二个表引用第一个?

1 个答案:

答案 0 :(得分:1)

您不需要在跟踪表中使用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中有记录。