[PHP-users 629] PHP 経由の SQL INSERT エラーについて

php-users@php.gr.jp php-users@php.gr.jp
8 Jul 2001 20:09:01 +0900


初めまして。上垣と申します。
RedHat Linux 7.1上にてApache1.3.18+php-3.0.18-i18n-ja-2と
PostgreSQL 7.1で開発をしております。

serial(sequence)とuniqueのデータ型を持つテーブルを作成し、
PHP経由でinsertを行いますと、PHPエラーが出ます。

以下のテーブルを作成し、
CREATE TABLE tb_testA(
	test_id SERIAL,
	test_text TEXT UNIQUE NOT NULL
);
WWW(PHP3)経由で以下のようなスクリプトを実行しました。
<?
    $conn = pg_connect("","","test");
    $rs = pg_exec($conn, "INSERT INTO tb_testA(test_text) VALUES('t1')");
    print $rs;
?>

その結果、
Warning: PostgresSQL query failed: ERROR: Cannot insert a 
duplicate key into unique index tb_testA_test_pkey in 
test.php3 on line 3
というエラーが出ました。

テーブルを確認しましたところ、データは収められていました。
test=# SELECT * FROM tb_testA;
 test_id | test_text   
---------+-----------
       1 |        t1 
(1 rows)

コマンドラインからINSERTを行いますと、エラーは出ません。

また、SERIALのみの以下のようなテーブルを作成し、
CREATE TABLE tb_testB(
	test_id SERIAL,
	test_text TEXT NOT NULL
);
WWW(PHP3)経由で
INSERT INTO tb_testB(test_text) VALUES('t1')
を行いますと、エラーは出ません。

しかし、同一テーブル上にてUNIQUEとSEQUENCEを使いたいのです。

この解決について知恵をお貸しいただけませんでしょうか?
どうぞよろしくお願いいたします。


-- abundantia@mail.goo.ne.jp