Eu tenho uma coluna: standard BOOLEAN NOT NULL
Gostaria de aplicar uma linha True e todas as outras False. Não há FKs ou qualquer outra coisa, dependendo dessa restrição. Eu sei que posso fazer isso com o plpgsql, mas isso parece uma marreta. Eu preferiria algo como um CHECK
ou UNIQUE
restrição. Quanto mais simples, melhor.
Uma linha deve ser True, nem todas podem ser False (portanto, a primeira linha inserida precisa ser True).
A linha precisará ser atualizada, o que significa que tenho que esperar para verificar as restrições até que as atualizações sejam concluídas, pois todas as linhas podem ser definidas como False primeiro e uma linha True depois.
Existe um FK entre products.tax_rate_id
e tax_rate.id
, mas não tem nada a ver com a taxa de imposto padrão ou padrão, que é selecionável pelo usuário para facilitar a criação de novos produtos.
PostgreSQL 9.5, se for importante.
fundo
A tabela é a taxa de imposto. Uma das taxas de imposto é o padrão ( standard
já que o padrão é um comando do Postgres). Quando um novo produto é adicionado, a taxa de imposto padrão é aplicada ao produto. Se não houver standard
, o banco de dados deve adivinhar ou todos os tipos de verificações desnecessárias. A solução simples, pensei, era garantir que exista um standard
.
Por "padrão" acima, quero dizer para a camada de apresentação (UI). Existe uma opção do usuário para alterar a taxa de imposto padrão. Eu preciso adicionar verificações extras para garantir que a GUI / usuário não tente definir o tax_rate_id como NULL ou apenas defina uma taxa de imposto padrão.