Como fazer uma chave estrangeira com uma restrição na tabela referenciada no PostgreSQL

Suponha que eu tenha as seguintes tabelas

<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>

Isso tudo funciona como esperado, mas eu gostaria de adicionar uma restrição adicional que um matrix_param só pode se referir ao pluginid que tem o tipo 'matriz'. assim

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

Deve ser bem sucedido, mas

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

Deve falhar.

Uma restrição simples para matrix_params não funciona, pois não há como saber qual é o tipo correspondente na tabela de plugins.

questionAnswers(3)

yourAnswerToTheQuestion