Cómo hacer una clave externa con una restricción en la tabla a la que se hace referencia en PostgreSQL

Supongamos que tengo las siguientes tablas

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

Todo esto funciona como se esperaba, pero me gustaría agregar una restricción adicional de que matrix_param solo puede referirse al complemento que tiene el tipo 'matrix'. Asi que

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

Debe tener éxito pero

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

Debería fallar.

Una restricción simple para matrix_params no funciona, ya que no tiene forma de saber cuál es el tipo correspondiente en la tabla de complementos.

Respuestas a la pregunta(3)

Su respuesta a la pregunta