Você não pode resolver esse problema com seu projeto atual sem interpor alguma lógica no gatilho ou no nível do aplicativo.
FOREIGN KEY
s não pode fazer referência a mais de uma tabela (eu entendo que seu design use uma tabela por grupo de produtos, se eu estiver errado, por favor me avise). Além disso, eles não podem conter nenhuma lógica condicional, portanto, mesmo que você tenha um único product_groups
tabela você não pode criar uma FOREIGN KEY
que permite apenas os registros G1 e G2 dessa tabela. Para fazer isso com restrições de integridade relacional padrão, você precisaria de uma tabela adicional chamada algo como
approvable_products
que conteria os product_ids
desses produtos que estão no grupo um ou no grupo dois.