On Thu, 11 Dec 2003, C G wrote:
> I'm trying to create a table where the username and email can only be
> inserted into the table if the username is already in pg_user. The method
> I'm trying is:
>
> CREATE user(
> usename name,
> email text,
> FOREIGN KEY usename REFERENCES (pg_user)
> );
>
> but I get told that "...pg_user is not a table."
Which is true, it's a view. However, even were it a table,
it's a system table and references to them are not allowed (in recent
versions it'll fail to make the constraint, in older versions it would
make the constraint but it wouldn't work).
> Is there another way of doing what I want?
You could potentially do the insert/update on user time check in a custom
trigger. That wouldn't prevent you from dropping a user later that was
referenced, however.