Re: referential integrity violation

From: Darren Ferguson <darren(at)crystalballinc(dot)com>
To: mk(at)fashaf(dot)co(dot)za
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: referential integrity violation
Date: 2002-10-18 14:34:31
Message-ID: Pine.LNX.4.44.0210181031260.28273-100000@thread.crystalballinc.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

What is happening is that you are trying to insert and id for slip
printer into the TABLE pc but the id does not exist in the slip printer
table.

Since you have slip_printer in pc table and you specified that it
references the slip_printer table id then you must have an id in slip
printer for it to insert into the pc table unless you insert a null value
since you did not specify the constraint on the table

HTH

On Fri, 18 Oct 2002 mk(at)fashaf(dot)co(dot)za wrote:

> Hi guys
>
> I have created a Pg DB, Ive included 2 of the tables.
> When inserting non NULL values everything works just fine,
> but when i want to leave a table empty i get the following error:
>
> EXEC: ERROR: referential integrity violation - key referenced from pc not found in slip_printer
>
> Im recieving the information from a Perl CGI form that is filled in and then INSERT it using perl DBI
>
> If any more information is needed please let me know. As far as i know i should be allowed to have null.
>
> TIA
> Merritt
>
> CREATE TABLE slip_printer (
> id SERIAL PRIMARY KEY,
> make VARCHAR(256) NOT NULL,
> model VARCHAR(256) NOT NULL,
> UNIQUE (make, model)
> );
>
> CREATE TABLE pc (
> id SERIAL PRIMARY KEY,
> store INTEGER REFERENCES store (id) NOT NULL,
> cpu_type INTEGER REFERENCES cpu_type (id) NOT NULL,
> cpu_mhz INTEGER REFERENCES cpu_mhz (id) NOT NULL,
> memory_type INTEGER REFERENCES memory_type (id) NOT NULL,
> memory_amount INTEGER, /* amount of chips/sticks, not size in MB */
> hdd INTEGER REFERENCES hdd (id),
> hdd_serial VARCHAR(256),
> monitor INTEGER REFERENCES monitor (id) NOT NULL,
> slip_printer INTEGER REFERENCES slip_printer (id),
> report_printer INTEGER REFERENCES report_printer (id),
> cash_drawer INTEGER REFERENCES cash_drawer (id) NOT NULL,
> scanner INTEGER REFERENCES scanner (id) NOT NULL,
> ups INTEGER REFERENCES ups (id),
> modem INTEGER REFERENCES modem (id)
> );
>

--
Darren Ferguson

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message mk 2002-10-18 14:49:26 Re: referential integrity violation
Previous Message Dave Cramer 2002-10-18 14:34:26 Re: [JDBC] Performance problem iterating a resultset