1

という列を持つテーブルがあるとしましょうa。それにインデックスUNIQUE KEYが付いています。

ORM モデルでは、そのテーブルに挿入しようとします。これは、ユーザーが一意ではないDatabase_Exception [ 1062 ]列に何かを挿入しようとしたときに発生するキャッチ方法です。a

function save(Validation $validation = null) {
     try {
         parent::save($validation);
     } 
     catch (Database_Exception $exception) {
         if ($exception->getCode() === 1062) {
            // PK?
         }
     }
}

今、複製しようとしたコンテンツが既にあるエントリの主キーを取得しようとしています。これ以上 SQL クエリがなくても可能ですか? その行の主キーがどこかに返されることを願っています。

意味不明で申し訳ありませんが、説明するのがちょっと難しかったです。アドバイスありがとう!

4

1 に答える 1

0

いいえ、できません。

primary keyこれには、例外からのその重複エントリもあるとは予想されません。

  • この例外をスローするのは、基礎となるデータベースです。
  • データベースが何らかの方法でそのメッセージを報告できれば可能です。しかし、それは、より多くの情報が必要な非常に多くの同様のケースにつながります. そして、すべてのデータベース ベンダーがこれを確認する必要がありますが、これは不可能だと思います。
于 2011-11-12T20:37:07.957 に答える