3

SQL Alchemy を使用した部屋予約アプリでセッションを使用しています。今までアプリは問題なく動作していましたが、異なるユーザー アカウントを使用して 2 人で同時に使用してテストしたところ、予約は同じ部屋と時間帯で行うことができました。

これは、1 つのアカウントだけを使用している場合には発生しませんでした。ルーム チェック コードを何度もテストしたため、同時実行性の問題に違いありません (両方のユーザーが空の場合と make it の場合にチェックを使用します)。PostgreSQL を DBMS として使用しています。DB へのコミット中にテーブルをロックし、完了時にロックを解除する方法はありますか??

4

1 に答える 1

2

これはまさに、排他制約が考案された種類のケースです。9.2 がリリースされると、 timestamptz 範囲でこれらを使用できるようになります。バージョン 9.0 および 9.1 では、 temporalおよびbtree_gistモジュールをインストールする必要があります。

詳細については、アイデアを思いついて実装したJeff Davis によるこのブログ投稿を参照してください。

于 2012-08-24T01:42:00.057 に答える