プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。

現在、バッチで伝票を登録するプログラムを組んでいます。

実施したい内容は、伝票番号を採番し、伝票テーブルと伝票明細テーブルにデータを書き込むと言う物です。

具体的には、以下のテーブルです。
1.TRN_DENPYO
 DENPYO_NO
 DENPYO_HIDUKE
2.TRN_DENPYO_MEISAI
 DENPYO_NO
 DENPYO_MAISAI_NO
 DENPYO_SYOHINCD

※TRN_DENPYOのDENPYO_NOはserialです。

そこで、TRN_DENPYO にレコードを追加した後、自動的にカウントアップされるTRN_DENPYOのDENPYO_NOを取得するために LASTVAL()を使用したいのですが、うまく行きません。

以下、実際に記述しているSQL文です。

$sql = 'INSERT INTO "TRN_DENPYO"("DENPYO_HIDUKE")VALUES(' . $denpyo_hiduke . ')';
$db->query($sql);
$sql = 'SELECT LASTVAL()';
$result =& $db->query($sql);
while($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) {
$denpyo_no = $row['LASTVAL()'];
}
echo $denpyo_no;

この時点で、$denpyo_no の値が表示されると思っているのですが、表示されません。

どなたか教えて頂けませんでしょうか?

ちなみに環境は、PostgerSQL8.2 php5を使用しています。

A 回答 (1件)

LASTVAL()は、マニュアルを見る限りPostgreSQL 8.3から登場しているようですが?



$sql = 'SELECT LASTVAL()';
$denpyo_no = $row['LASTVAL()'];

一般的には、

SELECT LASTVAL() AS LV

のように別名を付け、

$denpyo_no = $row['LV'];

のように別名で参照します。

この回答への補足

chukenkenkouさま

ご回答ありがとうございます。

別名をつけるのですね!
勉強になりました(というか、こんな質問をして恥ずかしいです)

マニュアルを見ると8.1.0に書かれていたので使えると、
実際に試してみても関数関係のエラーにならないので、
これは、私の使い方が悪いのだと思っていました。

ありがとうございました。

補足日時:2008/03/27 08:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!