Hello, everybody!

I don't whether it is possible to do the following but anyway I can't.
I need to write a constraint as described below.
Here are four tables:


CREATE TABLE countries
(id SERIAL,
 name VARCHAR(255),
 PRIMARY KEY (id)
);

CREATE TABLE countries_names
(id INT NOT NULL,
 id_lang INT NOT NULL,
 name VARCHAR(255),
 PRIMARY KEY (id, id_lang),
 FOREIGN KEY (id) REFERENCES countries (id),
 FOREIGN KEY (id_lang) REFERENCES lang (id)

);

CREATE TABLE contact_info_fields
(id SERIAL,
 name VARCHAR(255) NOT NULL,
 PRIMARY KEY (id)
);

CREATE TABLE contact_info_records
(id_user INT NOT NULL,
 id_ci_field INT NOT NULL,
 id_lang INT NOT NULL,
 value TEXT,
 PRIMARY KEY (id_user, id_ci_field, id_lang),
 FOREIGN KEY (id_user) REFERENCES users (id),
 FOREIGN KEY (id_ci_field) REFERENCES contact_info_fields (id),
 FOREIGN KEY (id_lang) REFERENCES lang (id)
);



The last table contains contact information records of different types. These 
types are taken from the table contact_info_fields. In particular, there can be 
the type 'country' say with id=1. Then the contact_info_records table can 
contain the following info: id_ci_field=1 and the VALUE field must contain a 
country's name but ONLY if it exists in the countries table (column 'name'). So 
it turns out to be a wierd foreign key. Is it possible to write such a 
constraint?

Thanks!


---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Reply via email to