Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Contraintes reportables dans SQL Server

OT :Il y a à mon humble avis pas mal de choses que SQL Server ne prend pas en charge, mais qui auraient du sens dans un environnement d'entreprise :

  • Contraintes reportables comme mentionné ici
  • MARS :Pourquoi avez-vous besoin de définir une option pour quelque chose d'entièrement naturel ?
  • Contraintes CASCADE DELETE :SQL Server n'autorise qu'un seul chemin de cascade pour une contrainte CASCADE DELETE donnée. Encore une fois, je ne vois pas pourquoi il ne devrait pas être autorisé à cascader lors de la suppression via plusieurs chemins possibles :en fin de compte, au moment où il est réellement exécuté, il n'y aura toujours qu'un seul chemin réellement utilisé, alors pourquoi est-ce une restriction ?
  • Prévention des transactions parallèles sur une seule connexion ADO.NET.
  • Forçage de chaque commande exécutée sur une connexion qui a une transaction à exécuter dans cette transaction.
  • Lors de la création d'un index UNIQUE, NULL est traité comme s'il s'agissait d'une valeur réelle et n'est autorisé à apparaître qu'une seule fois dans l'index. La notion SQL de NULL en tant que "valeur inconnue" indiquerait cependant que les valeurs NULL doivent être ignorées lors de la création de l'index...

Toutes ces petites choses rendent la plupart des fonctionnalités d'intégrité référentielle et transactionnelles que vous attendez d'un SGBDR complet presque inutiles dans SQL Server. Par exemple, étant donné que les contraintes reportables ne sont pas prises en charge, la notion de "transaction" en tant qu'unité de travail cohérente en externe est en partie annulée, la seule solution viable - à l'exception de quelques solutions de contournement sales - étant de ne pas définir du tout les contraintes d'intégrité référentielle. Je m'attendrais à ce que le comportement naturel d'une transaction soit que vous puissiez travailler à l'intérieur de la manière et dans l'ordre des opérations que vous aimez, et le système s'assurera qu'il est cohérent au moment où vous le validez. Des problèmes similaires découlent de la restriction, qu'une contrainte d'intégrité référentielle avec ON DELETE CASCADE ne peut être définie que de manière à ce qu'une seule contrainte puisse conduire à la suppression en cascade d'un objet. Cela ne correspond vraiment pas à la plupart des scénarios du monde réel.