テーブルに UNIQUE 列の複合セットがあります。したがって、一意のキーに違反しているテーブルに挿入すると、Postgresql はエラーを返し、PHP スクリプトはこのエラーを読み取ることができます。
挿入するときは、これを行う代わりに:
SELECT id FROM table WHERE col1='x' and col2='y'
(if no rows)
INSERT INTO table...
(else if rows are found)
UPDATE table SET...
私は使用することを好みます:
INSERT INTO table...
(if error occurred then attempt to UPDATE)
UPDATE table SET...
上記から返されるエラーの種類は、「エラー: 重複したキー値が一意の制約 "xxxxxxxx_key に違反しています" です。
ただし、無効なデータなどの他の理由で INSERT が失敗した場合、UPDATE を実行しても意味がありません。無効なデータではなく、この重複キーの問題からエラーが実際に失敗したかどうかを (PHP/Postgres から) 「知る」方法はありますか? 私はただ興味があります。データが無効な場合、UPDATE を実行してもエラーが返されますが、ベスト プラクティスは何だと思いますか?
どうもありがとう!