Thread: foreign key to "some rows" of a second table

foreign key to "some rows" of a second table

From
Chris Withers
Date:
Hi All,

    So, I have a table that looks like this:


    CREATE TABLE config (
        region    varchar(10),
        name    varchar(10),
        value    varchar(40)
    );

    Another looks like this:

    CREATE TABLE tag (
        host    varchar(10),
        type    varchar(10),
        value    varchar(10)
    );

    What's the best way to set up a constraint on the 'config' table
    such that the 'region' column can only contain values that exist in
    the 'tag' table's value column where the 'type' is 'region'?

    cheers,

    Chris

Re: foreign key to "some rows" of a second table

From
Achilleas Mantzios
Date:
On 22/02/2016 13:03, Chris Withers wrote:
Hi All,

So, I have a table that looks like this:

CREATE TABLE config (
    region    varchar(10),
    name    varchar(10),
    value    varchar(40)
);

Another looks like this:

CREATE TABLE tag (
    host    varchar(10),
    type    varchar(10),
    value    varchar(10)
);

What's the best way to set up a constraint on the 'config' table such that the 'region' column can only contain values that exist in the 'tag' table's value column where the 'type' is 'region'?

Hi,
that's the reason CONSTRAINT TRIGGERS were introduced in PostgreSQL, I guess.
Just write an AFTER INSERT OR UPDATE TRIGGER ON config,
which checks for integrity.


cheers,

Chris


-- 
Achilleas Mantzios
IT DEV Lead
IT DEPT
Dynacom Tankers Mgmt