Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Restrições Adiáveis ​​no SQL Server


OT:Existem algumas coisas IMHO que o SQL Server não suporta, mas faria sentido em um ambiente corporativo:
  • Restrições adiáveis ​​conforme mencionado aqui
  • MARS:Por que você precisa definir uma opção para algo totalmente natural?
  • Restrições CASCADE DELETE:o SQL Server permite apenas um único caminho em cascata para uma determinada restrição CASCADE DELETE. Novamente, não vejo uma razão pela qual não deva ser permitido cascatear na exclusão através de vários caminhos possíveis:No final, no momento em que realmente é executado, sempre haverá apenas um caminho sendo realmente usado, então por que isso é restrição?
  • Prevenção de transações paralelas em uma única conexão ADO.NET.
  • Forçamento de cada comando executado em uma conexão que tenha uma transação a ser executada dentro dessa transação.
  • Ao criar um índice UNIQUE, NULL é tratado como se fosse um valor real e pode aparecer apenas uma vez no índice. A noção do SQL de NULL como um "valor desconhecido" indicaria, no entanto, que os valores NULL seriam ignorados completamente ao criar o índice...

Todas essas pequenas coisas tornam a integridade referencial e os recursos transacionais que você esperaria de um RDBMS de tamanho normal quase inúteis no SQL Server. Por exemplo, uma vez que as restrições adiáveis ​​não são suportadas, a noção de uma "transação" como uma Unidade de Trabalho externamente consistente é parcialmente negada, sendo a única solução viável - exceto algumas soluções alternativas sujas - não definir restrições de integridade referencial. Eu esperaria que o comportamento natural de uma transação seja que você possa trabalhar dentro dela da maneira e na ordem das operações que desejar, e o sistema garantirá que ela seja consistente no momento em que você a confirmar. Problemas semelhantes surgem da restrição, que uma restrição de integridade referencial com ON DELETE CASCADE só pode ser definida de forma que apenas uma única restrição possa levar à exclusão em cascata de um objeto. Isso realmente não se encaixa na maioria dos cenários do mundo real.