Jak utworzyć klucz obcy z ograniczeniem do przywoływanej tabeli w PostgreSQL

Załóżmy, że mam następujące tabele

<code>CREATE TABLE plugins (
id int primary key,
type text);

insert into plugins values (1,'matrix');
insert into plugins values (2,'matrix');
insert into plugins values (3,'function');
insert into plugins values (4,'function');

CREATE TABLE matrix_params (
id int primary key,
pluginid int references plugins (id)
);
</code>

To wszystko działa zgodnie z oczekiwaniami, ale chciałbym dodać dodatkowe ograniczenie, że matrix_param może odnosić się tylko do pluginidu, który ma typ „matrix”. Więc

<code>insert into matrix_params values (1,1);
</code>

Powinien odnieść sukces, ale

<code>insert into matrix_params values (2,3);
</code>

Powinien zawieść.

Proste ograniczenie dla matrycy_params nie działa, ponieważ nie ma możliwości sprawdzenia, jaki jest odpowiedni typ w tabeli wtyczek.

questionAnswers(3)

yourAnswerToTheQuestion