php シーケンスとトランザクション

uchiumiです。
今日のPHPは、シーケンスについてや、トランザクションについてなどを学びました。

シーケンスについて

シーケンスを使うとデータ追加時にIDをつける際、順番に番号を振ってくれて楽とのことでした。

create sequence キー名 start 初期値;

これで作成し、insert文のIDの値を入れるところに、

nextval(’test_0724_id_seq’)

と記述します。

以前、ファイルを使っていたときは、このIDをつけるという作業に少し悩んでいたので、とても便利だと思いました。

トランザクションの処理をする

トランザクションの処理をするには以下のものを使います。
pg_query(”BEGIN”);
pg_query(”ROLLBACK”);
pg_query(”COMMIT”);

もしもCOMMITするまでに一連するデータの追加や削除や更新を行い、複数行ったうちの1つが失敗してしまった場合、他の成功した処理を反映させない為にROLLBACKをすることによって変更された内容をBEGINを宣言した時のものに復元できるとのことでした。
もし問題がない場合は、COMMITをすることにより、変更処理を反映させるとこができます。
また、BEGINを宣言すると、同時に同じデータの変更処理がされるのを防げるとのことでした。
他にもこれを使う目的として、アプリケーションでエラーが出てしまった時の為、対話型のインターフェースでSQL文を打つ場合に安全の為に、というものがあるとのことでした。
私たちはまだこれを使わなければならないような複雑なデータベースの処理をしていませんが、用途をしっかり理解して、有効に使っていきたいと思います。

また今日はデータベースからtimestamp型のデータをとってくる際に、
strtotime()という関数を使うとデータをフォーマットし直せるということを教えてもらいました。
一度フォーマットされたものをもう一度フォーマットし直せる関数があることに驚きました。
いろいろな関数を使いこなせるようになりたいと思います。

(2008/07/25 17:18 uchiumi追記)
動画アップしました!

コメントをどうぞ

名前: (Required)

eMail: (Required)

Website:

Comment:

Spam Protection by WP-SpamFree