Lost in Foreign Key land

From: Benjamin Smith <lists(at)benjamindsmith(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Lost in Foreign Key land
Date: 2005-04-09 22:41:55
Message-ID: 200504091541.55139.lists@benjamindsmith.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Ok, I have a stupid-simple table:

create table files (
id serial unique not null,
mime varchar not null,
name varchar not null
);

Idea being that I can save values from a file upload into a table, and use
throughout my application. This gives me a central repository to look for
files of a particular name, etc. while allowing multiple files with the same
name to be uploaded. It might be used something like this:

create table personalinfo (
name varchar,
address varchar,
resume integer not null references files(id)
);

But, I want to keep it "clean" - meaning that if the file orphaned, (isn't
used anywhere), I want to delete it. I asked a related question a few months
ago, and never understood the responses. (See thread "Search for restricting
foreign keys") I just spent the last few hours trying to make sense of Forian
Plug's query from an email dated 1/25/05 and reading up on the attribute
tables, and I am lost.

I'm sure it's very logical, and I'm just as sure that the logic, for now,
escapes me. What I'd like to be able to do is get a list of files table id
fields that have no values tied to them.

If I execute "delete from files;", it won't delete them, because of foreign
keys that refer to one or more of the files records.

How can I get a list of files records with no foreign key records referencing
the id field, without having to join on every single table that refers to
files(id)? (now maybe a dozen, and growing) Something like "select id from
files where id not in (select references to files.id)";

-Ben
--
"The best way to predict the future is to invent it."
- XEROX PARC slogan, circa 1978

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Andreas Seltenreich 2005-04-10 01:39:08 Re: Accessing environment variables from psql (SOLVED)
Previous Message Stanislaw Tristan 2005-04-09 17:01:19 Need help with NPGSQL