次に説明する 2 つのデータベース テーブルがあります。アスタリスクは主キーを強調しています。
+----------------+ +----------------+
| 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に基づいて投稿を管理 (挿入/更新) したい。