Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Aufschiebbare Einschränkungen in SQL Server

OT:IMHO gibt es einige Dinge, die SQL Server nicht unterstützt, die aber in einer Unternehmensumgebung sinnvoll wären:

  • Aufschiebbare Beschränkungen wie hier erwähnt
  • MARS:Warum müssen Sie eine Option für etwas völlig Natürliches festlegen?
  • CASCADE DELETE-Einschränkungen:SQL Server lässt nur einen einzigen Kaskadierungspfad für eine gegebene CASCADE DELETE-Einschränkung zu. Auch hier sehe ich keinen Grund, warum es nicht erlaubt sein sollte, beim Löschen über mehrere mögliche Pfade zu kaskadieren:Am Ende wird zum Zeitpunkt der tatsächlichen Ausführung immer nur ein Pfad tatsächlich verwendet, also warum ist das eine Einschränkung?
  • Verhinderung paralleler Transaktionen auf einer einzelnen ADO.NET-Verbindung.
  • Erzwingen von jedem Befehl, der auf einer Verbindung ausgeführt wird, die eine Transaktion hat, die innerhalb dieser Transaktion ausgeführt werden soll.
  • Bei der Erstellung eines UNIQUE-Index wird NULL so behandelt, als ob es sich um einen tatsächlichen Wert handelt, und darf nur einmal im Index erscheinen. Die Vorstellung von NULL in SQL als "unbekannter Wert" würde jedoch darauf hindeuten, dass NULL-Werte beim Erstellen des Indexes vollständig ignoriert werden ...

All diese kleinen Dinge machen viele der referenziellen Integritäts- und Transaktionsfunktionen, die Sie von einem RDBMS in voller Größe erwarten würden, in SQL Server fast nutzlos. Da zum Beispiel aufschiebbare Beschränkungen nicht unterstützt werden, wird der Begriff einer "Transaktion" als extern konsistente Arbeitseinheit teilweise negiert, wobei die einzig praktikable Lösung - abgesehen von einigen schmutzigen Problemumgehungen - darin besteht, überhaupt keine referenziellen Integritätsbedingungen zu definieren. Ich würde erwarten, dass das natürliche Verhalten einer Transaktion darin besteht, dass Sie in der Art und Reihenfolge der Operationen arbeiten können, die Sie möchten, und das System wird sicherstellen, dass sie zum Zeitpunkt der Übergabe konsistent ist. Ähnliche Probleme ergeben sich aus der Einschränkung, dass eine referentielle Integritätsbedingung mit ON DELETE CASCADE nur so definiert werden darf, dass nur eine einzige Bedingung zum kaskadierten Löschen eines Objekts führen kann. Das passt wirklich nicht zu den meisten realen Szenarien.