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.