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.