Re: [GENERAL] Re:PostgreSQL and PHP

From: "sheila bel" <sheilabel(at)hotmail(dot)com>
To: eloehr(at)austin(dot)rr(dot)com, sheilabel(at)hotmail(dot)com
Cc: jeff95350(at)yahoo(dot)com, pgsql-general(at)postgreSQL(dot)org
Subject: Re: [GENERAL] Re:PostgreSQL and PHP
Date: 2000-02-12 16:45:25
Message-ID: 20000212164525.34702.qmail@hotmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


>
>sheila bel wrote:
> >
> > but I'm having a problem when I want to insert data into
> > a table that has type serial in it.
> >
> > agency(id serial, agency_name text, street_addr text, ...)
> >
> > $result = pg_Exec($conn, "INSERT INTO agency VALUES
> > ('nextval(\'agency_agencyid_seq\'),','$agency_name','$street_addr')");
> >
> > Warning: PostgresSQL query failed: ERROR: Cannot insert a duplicate key
>into
> > a unique index in
> > /home/httpd/html/tests/T2.php3 on line 57
>
>This from a non-PHP user:
>
>1) If you have triggers firing on the server, and one of *those*
>tries to insert a duplicate key, it can appear from the client side as
>if you'd inserted a dup into agency.
>
>2) The name of your sequence looks fishy. I thought it would've been
>named 'agency_id_seq' if it came from a serial...
>

*****> Sorry I didn't type the table correctly, it is :
agency(agency_id serial,....) thats why i get the fishy sequence name.

>% psql -d emsdb -c "create table agency(id serial, agency_name text,
>street_addr text)"
>NOTICE: CREATE TABLE will create implicit sequence 'agency_id_seq'
>for SERIAL column 'agency.id'
>NOTICE: CREATE TABLE/UNIQUE will create implicit index
>'agency_id_key' for table 'agency'
>CREATE
>
>3) The nicest thing about serials is that you really don't need to
>specify the serial column at all if you don't need the value
>immediately in the client as a foreign key...
>
>% psql -d emsdb -c "insert into agency (agency_name, street_addr)
>values ('MyAgency1', 'MyAddr1')"
>INSERT 3878944 1
>
>% psql -d emsdb -c "insert into agency (agency_name, street_addr)
>values ('MyAgency2', 'MyAddr2')"
>INSERT 3878976 1
>
>% psql -d emsdb -c "select * from agency"
>id|agency_name|street_addr
>--+-----------+-----------
> 1|MyAgency1 |MyAddr1
> 2|MyAgency2 |MyAddr2
>(2 rows)

*****> Well, I did try doing this but for some reason its expecting
a value for the agency_id and I get an error message. Maybe it has
something to do with PHP ?

by the way what does the -d emsdb -c mean ?

I just connect to my database using >psql mydatabase
then I do inserts or updates. If I want to connect to another
database I do >-c anotherdb.

-Sheila

______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Ed Loehr 2000-02-12 17:28:39 Re: [GENERAL] Re:PostgreSQL and PHP
Previous Message Ed Loehr 2000-02-12 16:32:23 Re: [GENERAL] Re:PostgreSQL and PHP