web2pyの複合キーの質問は、ここでAnthonyによってかなりよく答えられましたが、彼の答えに含まれている警告に対する答えを探しています。彼の答えは、フォーム検証の使用primarykey
と使用を提案しIS_NOT_IN_DB
、警告(およびさらなる提案)は次のとおりでした。
...上記は、テーブルへの任意の挿入では機能しませんが、主にユーザー入力の送信を目的としています。
SQLを使用して、テーブルに複数列の一意性制約を設定することもできます(これは、データベースで直接行うか、web2py .executesql()メソッドを介して行うことができます)。ただし、このような制約がある場合でも、データベースからのエラーを回避するために、アプリケーション内で入力検証を行う必要があります。
CREATE UNIQUE INDEX
フィールドにを追加しました。私の主な質問は、これらのエラーに対してスローされる例外をキャッチするための最良の方法は何ですか?ユーザーフォーム(チェック/テクニックINSERT
をバイパスする)の外部で(重複キーを使用して)レコードを作成しようとしたときにdbレイヤーがスローする例外をキャッチできる単一(またはいくつか)の場所はありますか? IS_NOT_IN_DB
?または、このテーブルでINSERTを実行するときに、その例外をキャッチする準備をする必要があることをチームが認識していることを確認する必要がありますか?または、 ... ?また、そのような重複を挿入しようとしている2人のユーザーがいる場合、SQLFORM
スローされる例外をキャッチする簡単な方法はありますか?(初心者の質問はすべて申し訳ありません。)