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.