0
私はPostgresDBを持っています。一つのテーブルに私はServer-IPを持っています。しかし、私は、2人の労働者が同じServer-IPを取得しないようにしたいので、1つのIPが選択されると直ちに他のすべての労働者にとって利用できないはずです。PostgresqlDB上で2人の作業者の結果が異なることを確認してください
CREATE TABLE server
(
id INT AUTO_INCREMENT,
ip VARCHAR(15) NOT NULL,
created INTEGER NOT NULL,
modified INTEGER NOT NULL
)
Sampledata
1 | 192.168.5.22 | 1476086120 | 1476086120
2 | 192.168.5.29 | 1476084147 | 1476084147
Worker 1: SELECT ip FROM server LIMIT 1 -> 192.168.5.22
Worker 2: SELECT ip FROM server LIMIT 1 -> 192.168.5.22 // but I'd rather have the result for id = 2 here, since id = 1 was already selected by Worker 1
誰でもこれを達成する方法についての良い方向を指摘できますか?
挿入、更新、削除のみに適用されるため、通常のロックはできません。選択したものはすべて選択です。
多分選択と更新の方法が1つのステップでありますが、それに関連するものは何も見つかりませんでした。 ここではいくつかの助けに感謝します。
おかげ
** [EDIT]あなたの質問をし、いくつかのサンプルデータと予想される(table'文を作成 'として)テーブル定義を追加します。
代わりに、1つのトランザクションで
SELECT ... FOR UPDATE
とUPDATE
を使用することができますそのデータに基づいて出力します。 [_Formatted_](http://stackoverflow.com/editing-help#code)**テキスト**お願い、[スクリーンショットなし](http://meta.stackoverflow.com/questions/285551/why-may-i -not-upload-images-of-code-on-so-ask-a-question/285557#285557) –