この質問はすでに尋ねられているかもしれませんが、検索方法がよくわかりません。
postgres-table「顧客」があり、各顧客には独自の名前があります。これを実現するために、この列に一意の制約を追加しました。
phpでテーブルにアクセスします。
ユーザーが既に使用されている名前で新しい顧客を作成しようとすると、データベースは「整合性制約違反」と表示し、php はエラーをスローします。
私がやりたいことは、html-input-field にエラーを表示することです:「顧客名は既に取得されています」というエラーが発生した場合。
私の質問は、これをどのように行うべきかです。
PDO 例外をキャッチする必要がある場合は、エラー コードが「UNIQUE VIOLATION」であるかどうかを確認し、例外メッセージに従ってメッセージを表示する必要があります。新しい列?
より良い実践とは? さらにSQLステートメントを作成するか、エラーコードをキャッチして分析します。
編集: 私はトランザクションを使用しており、ロールバックするために例外をキャッチしています。問題は、ユニーク違反を除外して、ロールバックに至らないようにする必要があるかどうかです。
EDIT2: 例外メソッドを使用している場合、一意の制約が実際に「名前」列に属していることを確認するために、例外メッセージを分析する必要があります。
これは私が例外から得たすべてです:
["23505",7,"FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint <customers_name_unique>\nDETAIL: Schlüssel <(name)=(test)> existiert bereits."]
列に関する情報を取得する唯一の方法は、「customers_name_unique」(unique-constraint の名前) が存在するかどうかを確認することです。
ただし、ご覧のとおり、メッセージはドイツ語であるため、出力はシステムに依存し、変更される可能性があります。