sql >> データベース >  >> RDS >> Oracle

トランザクションへの親/子レコードの挿入

    子の挿入には、コミットされているか、同じトランザクションによって以前に挿入された(コミットされているかどうかに関係なく)親が表示されます。

    確認することの1つは、親の挿入が主キー値を自動的に導出しているかどうかです(トリガーなどを介して)。

    つまり、statementINSERTをContracts(contract_sequence_number、...)値(10437、...);

    に発行します。

    ただし、トリガーはシーケンスから新しいcontract_sequence_numberを決定し、実際には主キー10438(またはその他)を与えます。

    別の問題は、正しい順序で挿入を発行しないか、単一の「トランザクション」のためにプールから異なる接続を使用することによって問題を台無しにしているORMレイヤーである可能性があります。

    また、親の挿入がエラーを返さなかったことを確認してください。

    従来のクライアント(SQL * Plusなど)を介してサンプルトランザクションを実行し、それが機能するかどうかを確認してください。子の挿入がそこで失敗した場合は、コントラクトから最新のエントリをクエリバックして(たとえば、contract_sequence_number> 10400の場合)、挿入が成功したかどうかを確認します。



    1. Postgres:CASTエラーのデフォルト値を定義しますか?

    2. PostgreSQLデータベース設計のバックアップ-データなし

    3. CodeIgniterGROUP_CONCATと参加

    4. PHPクエリでスタック