Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Qual é a melhor maneira de impor um relacionamento de 'subconjunto' com restrições de integridade


Um dos problemas com o SQL é seu baixo nível de suporte para restrições de integridade, especialmente restrições referenciais.

Para todos os propósitos práticos, seu problema não pode ser resolvido usando restrições SQL, a menos que você desabilite as restrições quando quiser inserir uma linha em uma tabela. O motivo é que o SQL exige que as tabelas sejam atualizadas uma de cada vez e, portanto, a restrição deve ser violada sempre que novas linhas são inseridas. Esta é uma limitação fundamental do SQL e todos os principais SGBDs sofrem com isso.

Existem algumas soluções alternativas, mas nenhuma delas é perfeita. Você pode usar restrições DEFERRABLE se seu DBMS as tiver (Oracle, por exemplo). Uma restrição DEFERRABLE é realmente apenas uma maneira fácil de desabilitar uma restrição. Ou você pode usar gatilhos, o que significa que a regra é aplicada de forma processual e não por meio de uma restrição de banco de dados adequada.