1

挿入時に、一意の制約 mysql_errno() 1062 をキャッチしています。

これは正常に機能しますが、既存の行を見つけて復元または変更したいと考えています。

挿入失敗時に行 ID を取得する方法はありますか? mysql_insert_id() を試しましたが、挿入している (または挿入に失敗した) 行のみが返されることに気付きました。したがって、0 を取得します。

別の mysql_query を発行し、重複した値に対して単純に選択を実行する以外に選択肢はありませんか?

これを行うためのより良い、より迅速で経済的な方法がないことを確認したいだけです.

4

2 に答える 2

2

新しい値または既存の値を更新する場合に行を挿入しようとしている場合は、REPLACE INTOが必要です。REPLACE INTO は DELETE を実行してから INSERT を実行するため、制約が含まれる場合は、INSERT ... ON DUPLICATE KEY UPDATE 構文も考慮してください。

于 2010-05-03T05:02:31.980 に答える
0

「一意の」キーがないかテーブルをチェックし(SHOW CREATE TABLEそれらをすべてリストします)、試みた挿入クエリで関連する値をテーブルにクエリする必要があります。したがって、フィールド A、B、C、D および B、C に一意のキーを挿入する場合は、次のようになります。

SELECT id, B, C FROM table WHERE B=$B and C=$C;
于 2010-05-03T05:01:06.703 に答える