![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
postgreSQLで更新後のデータを取得したい。
初めて質問させていただきます。
postgreSQLでupdateした後、更新後のデータをselectで取得したいのですが、
トランザクションが完了するまでにselect文が発行されているみたいで、更新前のデータを取得してしまいます。
それぞれ、違うファイルから投げられているので、同じトランザクションにすることはできません。
何かいい方法があればご教授お願いします。
a.phpで下記のSQLを発行
update
test_tbl
set
test1 = 'aaa'
where
test2 = 'bbb'
a.phpが走っている間に、下記のb.phpが実行される。
select
test1
from
test_tbl
環境
php5
postgres8.1
No.2ベストアンサー
- 回答日時:
2個提案します。
1.Aでupdateする前にcvs形式でファイル保存して、Bではselectせずにcvsを見に行く。
ただ、1レコードならいいですけど、膨大なレコードの場合
考え物だと思います。
2.Bでselectする時にFOR UPDATEをつければAが更新中だったら
更新が終わるのを待ってからselect出来ると思います。
ただ、Aが数秒おきに行われるということなので、
Bのselectが終わったらすぐにロックを解除しないとAが数秒間
止まる可能性を考えなければなりません。
回答ありがとうございます。
2の方は既に試したのですが、できませんでした。
1の方でやってみたいと思います。
ありがとうございました。
No.3
- 回答日時:
定期的なUPDATEの自動処理はあまりお勧めできませんね・・。
何か別の方法で代用することは不可能なのでしょうか?
トランザクションがかかっているテーブルを引っ張る(別トランザクションをかける)こと自体、トランザクションの概念に反しています。
ちなみにトランザクションはどのレベルでしょう。
http://www.postgresql.jp/document/pg800doc/html/ …
こちらを参考に補足いただければと思います。
No.1
- 回答日時:
phpの内部処理がわからないので答えようがないです。
トランザクション云々以前に、一回のDB接続処理内で二つのSQLを発行してしまっているのではありませんか?
【ファンクションA】
DB接続→(トランザクション開始→)UPDATE SQL発行→(正常終了だったらコミット、エラーが出たらロールバック)→DB接続終了
【ファンクションB】
DB接続→(トランザクション開始→)SELECT SQL発行→(正常終了だったらコミット、エラーが出たらロールバック)→DB接続終了
のようなファンクションを作り、
PHPの画面処理側で
「ファンクションA(UPDATE)呼び出し→戻り値がTrueだったらファンクションB呼び出し(SELECT)」
のような制御をいれればいいのでは?
この回答への補足
早速の回答ありがとうございます。
PHPの内部の処理はおっしゃられた通りになっております。
ただ、ファンクションAの方が数秒おきに自動的に発行され、ファンクションBがボタンを入力したときに発行されるので、Trueの判定ができません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Visual Basic(VBA) エクセルVBA 3 2022/06/23 20:00
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Excel(エクセル) excel ピポットテーブルの更新について 1 2022/05/13 16:12
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
抽出結果を分割して取得
-
ポストグレスでfrom句の中にsel...
-
Select結果をSelect
-
IF文、条件分岐の整理方法
-
SQLを作ったのですがうまくいき...
-
SQLです教えてくださいお願いし...
-
次の並べ替え問題を教えてくだ...
-
Access DCountでの連番について
-
エクセルの関数について教えて...
-
NO WAR NO ABE
-
sinカーブの表示のさせ方
-
for whichの使い方
-
イェイイェイイェイ イェイイェ...
-
Mysql UPDATE出来ません
-
差し込み後、元データを変更し...
-
Access:クエリーにて集計後に...
-
AUTO_INCREMENTのあるテーブル...
-
エクセルで最後の文字だけ置き...
-
No problem.とNo wonder.とNo d...
-
mysqlで変数を使う方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL Date型の列から年月だけを...
-
select文の書き方「半角カナ+...
-
抽出結果を分割して取得
-
Select結果をSelect
-
ポストグレスでfrom句の中にsel...
-
年月でdistinctしたい(PostgreSQL)
-
postgreSQLで更新後のデータを...
-
条件付ソートについて
-
レコード件数のちょうど半分をe...
-
PL/pgSQLの返り値の取得方法に...
-
round関数について
-
取得行数の指定
-
重複する値を無視するには?
-
状態によって、取得したいデー...
-
SQL文の日本語の箇所で文字化け
-
2回目のselect文
-
sqlで全て出ないことがある
-
複数レコードのテーブルである...
-
selectの速度について
-
select文の結果を指定した条件...
おすすめ情報