下面描述了两个数据库表。星号突出显示主键。
+----------------+ +----------------+
| posts | | url_references |
+----------------+ +----------------+
| id* | | url* |
| post_content | | post_id |
+----------------+ +----------------+
我想根据表url_references中相应条目的存在来插入或更新帖子。达到此目的的最佳SQL 命令组合是什么?我想避免在PHP中处理关于插入或更新的决定。
以下场景描述了使用 PHP 命令的替代分步行为。
SELECT * FROM url_references WHERE url = $url;
场景 1:插入新条目。
// mysql_num_rows() returns 0
INSERT INTO post (post_content) VALUES ($postContent);
$postId = mysql_insert_id();
INSERT INTO url_references (url, post_id) VALUES ($url, $postId);
场景 2:更新现有条目。
// mysql_num_rows() returns 1
$row = mysql_fetch_array($rows);
$postId = $row['post_id'];
UPDATE posts SET post_content = $postContent WHERE id = post_id;
编辑 1:请注意,我无法直接检查帖子中的id!我想根据他们的url作为主键来管理(插入/更新)帖子。