脱力系備忘録BloG ホーム »データベース

【PostgreSQL】SERIAL型とROLLBACK  

SERIAL型定義や「CREATE SEQUENCE」でシーケンスをつくり、トランザクション内で自動採番させたものをROLLBACKしても元に戻らない。

これは仕様。

そもそもシーケンスジェネレータは自動採番する仕組みを提供するだけで、連番を保障する仕組みではない。


ふむ(´・ω・`)
LOCK処理などで自分で制御しないとだめな模様。

category: データベース

[PHP] DB - PEARとPDOのBOOLEAN型の扱いの違い  

PostgreSQLを使っているサイトの修正で躓いた。

今まではデータベースへのアクセスにPEAR:DBを使用している。
これをPDOに変更したらうまく動かない。

よく調べてみたら、「BOOLEAN」型項目の内容判定が正しく行われていない。

何故だろうと思い、それぞれのアクセス結果を見てみたら、ぬーん。

●PEAR::DBの場合
string("t")
string("f")

●PDOの場合
bool(true)
bool(false)

で返ってくる模様。

「BOOLEAN」型は使わず「INTEGER」型で定義したほうが素直でわかりやすいやね。

category: データベース

Sqlite3データベース内に作ったテーブル一覧を表示したい  

どんなテーブルを作成していたかわからなくなることがある。
そんなときに便利なSQLコマンドがありました。

select * from sqlite_master;

これでデータベースの中のテーブルが全て丸見えに。うふふ。

category: データベース

Sqlite3でDELETEを実行したけど戻り値FALSEで実行されない。  

いろいろ試してようやく気がついた。
Sqlite3は更新処理のときに一時ファイルを作成していたんですね。知らなかったよ。
例えば、「test.db」というデータベースファイル名の場合、「test.db-journal」という一時ファイルが作成される。

ということで、Sqlite3ファイル自体のパーミッションだけでなく、ディレクトリのパーミッションも適切に設定しておかないとダメということです。

え?常識?
ぃやん!

category: データベース

SQlite3 自動採番の備忘録  

データベースには自動採番という機能がある。
PostgreSQLなら「SERIAL」というデータ型を指定すると、データをINSERTするたびに自動的に1、2、3、と数値が振られていく。
SQlite3にも同じような機能があるのだが、PostgreSQLのようにシンプルではないので備忘録。

category: データベース

PostgreSQLとSQLite3とPDO  

SQLite3のREAL型カラムに、PHPのPDOの「bindParam」を使ってデータをINSERTするとき、データタイプに何を指定すればいいのかを調べるついでに、ちょっと気になったのでPostgreSQLとSQLite3の振る舞いの違いを調べてみた。

テーブルの構造は
カラム「a」「REAL」型
カラム「b」「INTEGER」型
です。

投入するデータは
$a = 10.05 →カラム「a」に投入
$b = 20.05 →カラム「b」に投入
とします。

category: データベース

MySQLって大文字小文字認識しないの?  

仕事の都合で初めてMySQLを触った。
PostgreSQLを普段使いにしている自分は、いつものようにプログラムを書いてテストをしてみると何かおかしい。

んん?

大文字と小文字を認識してねー。

(´・ω・`)って気分でネットをさまよってみると、MySQLがそういう仕様になってたんですね。
で、認識させるためには「binary属性」というものをつけてあげないとダメなんだそうな。


なんでやねん。

このブログで知りました。ありがたやありがたや。
http://nayuzak.blog50.fc2.com/blog-entry-17.html

category: データベース

プロフィール

お問い合わせ

最新記事

最新コメント

▲ Pagetop