Re: Foreign key on partial char field

Поиск
Список
Период
Сортировка
От Merlin Moncure
Тема Re: Foreign key on partial char field
Дата
Msg-id CAHyXU0y80FGQ3kS_ZsxvPcMBuKEC=aYe7NRnT7q7tuB8oooKwA@mail.gmail.com
обсуждение исходный текст
Ответ на Foreign key on partial char field  ("lmanorders" <lmanorders@gmail.com>)
Список pgsql-novice
On Wed, Oct 24, 2012 at 6:55 PM, lmanorders <lmanorders@gmail.com> wrote:
> I'm using Postgres 9.2 and connecting to it using libpq.dll on Windows.
> I have two tables:
> A zip code table with zcode char(5) Primary key, city varchar(30), and state
> char(2).
>
> An employee table that, among other things, contains a zip code field. This
> field can hold a nine-digit zip code.
> I want to add a constraint (foreign key) on the first 5 digits of this zip
> code that references the zip code table.
> I've tried several things, including the following, but I get an error when
> I try to create the table:
> ...
> zcode char(9)
> CONSTRAINT employee_zipcode_fkey FOREIGN KEY (SUBSTRING(zipcode from 1 for
> 5))
>      REFERENCES zipcds (zipcode) ON UPDATE CASCADE ON DELETE RESTRICT
> ...
>
> Can anyone tell me if this is possible, and if it is, how can this be done?

It's not directly possible.  FK references take only raw fields, not
expressions.  I would probably consider breaking out the zipcode into
a seprate field, and using a 'before' trigger to populate (taking care
it fires both on insert/update).   Also consider use of left() vs the
stupidly verbose substring().

merlin


В списке pgsql-novice по дате отправления:

Предыдущее
От: "lmanorders"
Дата:
Сообщение: Foreign key on partial char field
Следующее
От: nadeesh t v
Дата:
Сообщение: Index creation in postgresq