postgresql

ロールバックしてもシーケンスが戻らない?

テストケース内で SELECT nextval('hoge_seq'); でシーケンスを++取得する部分があって、テスト終了時にはrollbackしてるわけなんだけど、hoge_seqの現在値がどんどん進んでしまう現象。

schemaをもっと使っても良いと思う

DBならスキーマって機能が普通あるもんだと思いますが、実務上あんまり使われない機能の一つです…よね。幾つかシステムを見てきたけど、使ってるものはなかった。でも実は便利かも、というお話。 使い方 "スキーマ名.テーブル名"が認識子となる。CRUD文や外…

大雑把な結合の3つのやり方

大雑把な結合とは、「AのうちBにある/ないもの」とする。 SELECT * FROM A WHERE EXISTS (SELECT * FROM B WHERE A.hoge = B.hoge) / NOT EXISTS (...) SELECT * FROM A WHERE A.hoge IN (SELECT hoge FROM B) / NOT IN (..) SELECT * FROM A LEFT JOIN B ON…

postgreSQLのtimestamp with/without timezoneのjavaへの対応の違い

前にネタにしたんだけど、結構検索で引っかかる方が多いので補足します。 timestamp with timezoneはjava.sql.Timeクラス timestamp without timezoneはjava.sql.Timestampクラス という、結構単純な話でした。ResultSet.getMetaData().getColumnClassName(i…

SELECT table, * >> table > *

普段やることはないだろうけど、データ検証中に。 SELECT table1, table2, table3, * FROM table1 JOIN ( table2 JOIN ( table3 ON (table2.table3_id = table3.id) ) ON (table1.table2_id = table2.id) だとやたら遅い。 SELECT table1, table2, table3 と…

PostgreSQLとJDBCの"Timestamp"の解釈

CREATE TABLEの場合、TimestampとするとTimestamp without timezoneとして解釈される。 pgAdminIIIで「新しい列...」では、Timestamp with/without timezoneのどちらかを指定しなければならない。 入力リストボックス上、Timestamp with timezoneが上にある…