[PHP-dev 51] PostgreSQL+PHPでINSERTに失敗

Network21 php-dev@php.gr.jp
Thu, 13 Sep 2001 12:28:56 +0900


はじめまして、以前PHP-jpの時にもお世話になっていたUNAと申します。
PHPを用いてシステム開発なんかをやっております。
さて、早速質問なのですが、単純にデータベースに項目を追加したいの
ですが、作成したテーブル
create table email_log(
 m_id           int4  not null primary key,
 m_date         timestamp not null default now(),
 from_addr      text  not null,
 to_addr        text  not null,
 subject_id     int4  not null default 0,
 ref_id         int4  not null default 0,
 m_subject      text  not null,
 m_body         text  not null,
);
において、m_idのmaxを取り出し、+1してPHPからINSERT文

INSERT INTO email_log (m_id,from_addr,to_addr,subject_id,m_subject,m_body)
VALUES(3,'test@test.com','test@goo.com',6,'てすと','てすと ')

を実行すると、

Cannot insert a duplicate key into unique index email_log_pkey

となり追加できません。しかし、同じ文をpsqlから実行すると何の問題もなく
追加できます。(当然2回同じ文を実行すれば2度目はキーがぶつかるので
失敗しますが。)
psqlで実行したときも、PHPと同じnobodyユーザでログインしているので、
違いはないと思うのですが、これはなぜでしょうか???
ただ一点違うとすれば、PHP側ではこの文をpg_exec("BEGIN")としたあとに
記述しており、トランザクションの中に入っているということです。

ご存知の方いらっしゃいましたらご教授願います。

--------------------------------
RedHat6.2J
PHP4.0.6+Apache1.3.17
PostgreSQL7.1
--------------------------------

-------------------
UNA@Chiba-univ
network21@bd.wakwak.com