• ベストアンサー

postgresql  DELETE後commit前にselect出来ますか?

postgreSQL 7.2.1  JAVA 1.3.1_04 を使用して開発しています。 あるPrimaryKEYのレコードを削除後 commit前に本当に削除されたか確認したいのですが select count(*)を実行すると下記のようなエラーになってしまいます。 No results were returned by the query. これはpostgresqlの問題なのでしょうか? どなたかご教授ください。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • covachan
  • ベストアンサー率38% (46/120)
回答No.1

リンクで申し訳ないのですが、ここにバッチリ載っています。

参考URL:
http://ml.postgresql.jp/pipermail/pgsql-jp/2002-July/001947.html
noname#2686
質問者

お礼

covachanさん 先日はありがとうございました。 実はあの質問の件の回避策で考えていたのですが。。。 commitしないとダメだったんですね。。 もともと不思議な要望だったので もっとDBを信用していただくようにクライアントと話してみます。 調査&勉強不足で申し訳ないです。 とても助かりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • postgresql  DELETE後commit前にselect出来ますか?

    はじめまして。 postgreSQL 7.2.1  JAVA 1.3.1_04 を使用して開発しています。 あるPrimaryKEYのレコードを削除後 commit前に本当に削除されたか確認したいのですが select count(*)を実行すると下記のようなエラーになってしまいます。 No results were returned by the query. これはpostgresqlの問題なのでしょうか? どなたかご教授ください。 よろしくお願いいたします。

  • PostgreSQLのphpPgAdminを使って

    お世話になります。 PostgreSQL8.4.8のphpPgAdmin3.5.3を使ってデータを削除する際に 先ずデータをSELECT で表示させて確認後、 SQL編集 で SELECTを DELETE に書き換えて実行しましたが以下エラーが出ます ≪一覧確認用≫一覧表示はできました。 SELECT "kaiin_no","tenpo_no","tenpo_name" FROM "public"."store_table" WHERE "kaiin_no" IN ('1234',2222'); ≪削除用≫SELECT  → DELETEに変更 → 実行 → 以下エラー DELETE "kaiin_no","tenpo_no","tenpo_name" FROM "public"."store_table" WHERE "kaiin_no" IN ('1234',2222'); ≪エラー内容≫ ERROR: syntax error at or near "," LINE 1: SELECT COUNT(*) AS total FROM (DELETE "kaiin_no","tenpo_no",... ^ 文: SELECT COUNT(*) AS total FROM (DELETE "kaiin_no","tenpo_no","tenpo_name" FROM "public"."store_table" WHERE "kaiin_no" IN ('1234','2222')) AS sub 文法エラーのようなのですが 一覧が出来ているのに なぜ削除が出来ないのか 初心者で恐縮ですが ご教示頂ければ幸いです。

  • SELECTすると変更できない?

    横が120以上のものの中から、縦が50であるものを1レコード消す という処理をします。 mysql_query('START TRANSACTION'); $sqlsel = 'SELECT id, tate, yoko FROM dbtb WHERE yoko > 120'; $res = mysql_query($sqlsel); while ($line = mysql_fetch_row($res)) {  if ($line[1]) == 50) {   $sqldel = 'DELETE FROM dbtb WHERE id = "' . $line[0] . '" LIMIT 1';   mysql_query($sqldel);  } } mysql_query('COMMIT'); やりたいことに対してストレートなソースではないですが、SERECTしてforでループさせているときに、途中でDELETEしてもレコードの削除はできるんですか?

  • Selectした時のレコードの取得順

    SQL Server2005 で開発しています。 Order by で並び替えてレコードをSelectする際に、 Order by の対象列データが同じ場合は、 どういった順番でレコードが取得できるのでしょうか? TableA No | Data1 | Data2   1| AAA | 100   2| AAA | 200   3| AAA | 300   4| ABC | 400   5| BBB | 500 (Noはクラスタ化PK) 例えば、上のようなテーブルから次のSQLを実行すると  (1)Select * From TableA ;  (2)Select * From TableA Order by Data1 Asc;  (3)Select * From TableA Order by Data1 Asc, No Asc;  (1)(2)(3)全て、次の順で返ってきました。   1| AAA | 100   2| AAA | 200   3| AAA | 300   4| ABC | 400   5| BBB | 500  しかし、(2)のSQLは、データによって  次の順で返ってくることがありました。   3| AAA | 300   1| AAA | 100   2| AAA | 200   4| ABC | 400   5| BBB | 500    1~3レコード目までは全てData1がAAAのレコードですが  特に指定していなくても、No(PK)の順になるのかと思っていました。    なお、レコードができた(Insert順)でもなさそうです。  この、順番は何で決まっているのでしょうか?  

  • PostgreSQLで集約関数をネストしたい

    質問させてください PostgreSQLでは集約関数をネストできないのでしょうか。 以下の命令を実行すると「集約関数をネストできない」というエラーになります。 SELECT RCT_NO, MAX(SUM(BUYNUM)) FROM TRN_RECEIPT_DETAILS GROUP BY RCT_NO 実行環境はPostGreSQL 8です。 解決策をご存知でしたらお教えください。

  • SQLの構文

    以下のように、データの存在と共に名前まで一度に取得 できるクエリの書き方って存在しますか? select count(*), namae from a_class where no='1'; 通常は select count(*) from a_class where no='1'; として、1件ならば、 select namae from a_class where no='1'; で取得しますが。 DBはPostgreSQLです。perlのDBIを利用しています。

  • select文の条件指定

    PHPを使ってMySQLを検索するアプリを開発しています。 Select文の検索で以下のように検索条件を指定しています。 $query= "SELECT * FROM registration_tbl WHERE DATEDIFF(LAST_DAY(".$previousyear."),date) > 0 AND delete_flg = 0 ORDER BY date ASC ;" ; $res = $db->query($query); 上記の$query文字列の中の$previousyearには日付データが格納されています(確認済)。 意図としては$previousyearが示す月の月末日と、registration_tblのdateカラムとを比較して、dateの方が時期的に遅い(現時点に近い)レコードをselectしたいわけです。 なぜかこのクエリ文をMySQLに投げてもレコードがまったく検索できません。 もちろん該当するデータは10以上あることはphpMyAdminで確認すみです。そして、他の検索条件の場合にはちゃんと検索します。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • PostgreSQLでの外部結合

    PostgreSQLでの開発をしております。 今まで、Oracle,SQLServerでしか開発経験がなく、外部結合のやりかたがピンときません。 Oracleでいう以下のSQLをPostgreで書く場合、どのように記載すればよいのでしょうか? SELECT m.no, c.value FROM main_table m, code_master c WHERE m.code = c.code(+) AND m.update_date > sysdate AND c.content_flg = "0"; main_tableのcodeがNullや、code_master.codeに対応する値がない場合でも、レコードを持ってくる。 ※Oracleなどは独自のやりかたを行っているので、Joinを使うやりかたのほうがSQLとしては正しいのですが・・・。

  • select文の戻り値を変数に格納したい。

    select文の戻り値を変数に格納したい。 アクセスの選択クエリで以下の様なクエリをつくる。 select count(管理no) from 割り当てテーブル where 管理no = formのテキストボックスに書かれた値; doCmd.openQueryで実行させると画面が開きクエリの結果が表示される。 この値は必ず一つになるはずでその値を変数に取り込み次の処理を行いたい。 現在はクエリを実行後、フォームを開きなおし別の要素にクエリの結果を 表示させその値を取っている。なるべくならフォームを開きなす事をした くないので最初の実行時に変数として取り込みたい。

  • クエリでカウントしつつ、チェックボックスを

    クエリでカウントしつつ、チェックボックスを使えるように(更新できるように)したいです。 アクセス2003です。 テーブル1(主キーなし) 名前   退職(Yes/No型) 佐藤   No 田中   No 佐藤   No から下のクエリを作りました。 SELECT テーブル1.名前, Count(テーブル1.名前) AS 名前のカウント, テーブル1.退職 FROM テーブル1 GROUP BY テーブル1.名前, テーブル1.退職; 結果、 名前 名前のカウント 退職 佐藤   2        No 田中   1        No となりますが、退職フィールドにチェックを入れることは出来なくなってしまいます。 カウントしつつ、更新可能なクエリにしたいのですが不可能でしょうか? 最終的には、このクエリ1をレコードソースとしてフォームに表示させたいです。 ご教示よろしくお願い致します。