Tenho 2 modelos, model_A e model_B
Há uma relação um para n entre eles
Um registro no model_A possui vários registros relacionados no model_B
Gostaria de introduzir uma restrição: apenas UM registro relacionado em model_B pode ter um de seus campos definido como True
Como posso expressar isso?
Vamos definir tabelas de exemplo:
Então você poderia criar um índice exclusivo como
Isso permitirá apenas uma linha por
a_id
ondeonly_one_true
for verdadeiro:Basta usar um índice exclusivo filtrado
Essa abordagem funciona tanto com PostgreSQL quanto com SQL Server.