help with table constraint / check - Mailing list pgsql-general

From cliff@cliffmeyers.com
Subject help with table constraint / check
Date
Msg-id 20030314120145.29267.h011.c001.wm@mail.cliffmeyers.com.criticalpath.net
Whole thread Raw
List pgsql-general
hello,


This is my first post to the list, so if I make any mistakes, bear with me.  I
have a table that has the follow attributes:


fs_id
  integer
  not null default
  nextval('public.extranet_filesystem_fs_id_seq'::text)
parent_id
  integer
  not null default 0
fs_name
  character varying(255)
  not null
fs_type
  character varying(4)
  not null default 'file'

Indexes
  extranet_filesystem_pkey primary key btree (fs_id)
  extranet_filesystem_u1 unique btree (parent_id, fs_name)

Check constraints:
  "extranet_filesystem_fs_type"
  ((fs_type = 'file'::character varying) OR (fs_type = 'dir'::character varying))

Foreign Key constraints:
  $1 FOREIGN KEY (parent_id) REFERENCES extranet_filesystem(fs_id) ON UPDATE
CASCADE ON DELETE CASCADE


What I want to do is set up a constraint / check so that when a record is added,
it takes the parent_id being passed in the INSERT statement, looks at the record
whose fs_id equals the parent_id, and makes sure that the fs_type for that record
is 'dir' and not 'file'.

Can I do this with standard constraints or do I need to use some PL/pgSQL
features? Anyone have a few hints? Thanks!


-Cliff

pgsql-general by date:

Previous
From: Francisco Reyes
Date:
Subject: Corrupted sequences
Next
From: Tom Lane
Date:
Subject: Re: The folding of unquoted names to lower case in PostgreSQL