• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フィールドに関して)

PostgreSQLのフィールドについての疑問

このQ&Aのポイント
  • PostgreSQLの設定におけるフィールド「rdate」の意味を教えてください。
  • 初心者の私は、DBの違いによるフィールド設定の意味が分かりません。
  • フィールドの意味が分からず躓いています。どなたか教えていただけませんか?

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

  • ベストアンサー
回答No.2

>rdate timestamp default 'now' この文の意味としては、rdateというtimustamp型(日時を表す)の列に、insert時に値を設定しなかった場合、システムから現在日時を受け取って格納するという意味です。 >MySQLの場合、どのような属性が適切なのかをお教えいただければ データ型のtimestampは、PostgreSQL、MySQLの双方に存在し、日時を表す点では等価と考えて問題ないでしょう。 →実際にはPostgreSQLの方が、timestamp型でもいくつかの表現形式を持っているという違いがあります。 default 'now'というのは、PostgreSQLの独特の記述で、一般的な表記方法としてdefault current_timestampという表記がPostgreSQLでも等価の意味で行えます。この表記方法は、MySQLでも同じです。 →PostgreSQL 8.0.0では、default 'now'と記述すると、最初のinsert時に受け取った現在日時がその後も繰り返し受け渡しされ、これはバグだと思われます。current_timestamp指定では、insert毎に最新の日時が仕様通り返されます。 PostgreSQLでも一般的なSQLの書き方にすれば、今回のケースでは、MySQLでもそのままの文で表定義を行えます。 CREATE TABLE session ( sid varchar(32) primary key, uid varchar(16) not null, password varchar(16), rawdata varchar(512), rdate timestamp default current_timestamp );

sadacha
質問者

お礼

chukenkenkou様 こんばんは。早速のお返事を有難う御座います。 分かりやすい説明で、とても参考になりました。 お忙しい中、有難う御座いました。

その他の回答 (1)

回答No.1

この表定義は、どこからの引用ですか? ユーザの表定義なのですから、各列がどういう意味を持つのかは、引用元で調べるしかありません。 運良く(?)この表定義の引用元と思われるサイトを、私の方でも発見できました。 PHPでのコーディングのソース上のコメントでは、以下のように記されていますね。 処理内容は検証していないので、ご自分で確認してください。 =====ここから、引用===== // シリアライズされたセッションデータ保管用項目名。 // 読み出し用関数の作成が楽だったので、これも // 保管するようにしちゃいました。 define(S_RAW_DATA_FIELDNAME, "rawdata"); // セッションID保管用項目名。 define(S_SID_FIELDNAME, "sid"); // セッション登録日保管用項目名。 define(S_RDATE_FIELDNAME, "rdate"); =====ここまで=====

参考URL:
http://www.stackasterisk.jp/tech/php/php03_06.jsp
sadacha
質問者

お礼

chukenkenkou様 はじめまして、こんにちは。 仰るとおり、この定義はstackasterisk.jp様のところからの引用です。 chukenkenkou様も仰るように、サイト内のコードにはコメントで説明があるのですが、DBのフィールド属性であるtimestamp default 'now'が、MySQLでは使えないといった記事もあったりしたので、MySQLの場合、どのような属性が適切なのかをお教えいただければと質問させて頂きました。 このての説明も、いくつかのサイトには記してあるのですが、動作確認をしようにも、このサンプルコード自体を動かす事が出来ずにおりまして、コードが原因なのか、DBの設定が原因なのか、を解消できればと…。