SSMS erlaubt doppelte Datensätze in einer Tabelle, jedoch keine nachfolgenden Aktualisierungen

Bearbeiten: Wenn ich "SQL Server" sage, spreche ich wirklich über das Management Studio. Entschuldigung, wenn das verwirrend war.

Oh, ich hasse es, wenn so etwas passiert. Ich habe gestern mit SQL Server gearbeitet und den PIVOT-Befehl ausprobiert, um herauszufinden, wie er funktioniert. Also habe ich eine neue Tabelle mit vier Spalten erstellt und die erste Spalte sollte für die ersten paar Zeilen den gleichen Wert haben.

Ich habe der ersten Zeile, der ersten Spalte den Wert "value1" hinzugefügt und die Eingabetaste gedrückt. Es wurden noch keine Schlüssel oder Einschränkungen hinzugefügt. Dadurch konnte ich in die nächste Zeile mit Nullen für die anderen Spalten in der ersten Zeile (d. H fein). Zu meiner Überraschung konnte ich auch "value1" in der zweiten Zeile eingeben und dann nach unten - dies sollte unmöglich sein, da es jetzt zwei identische Zeilen gibt. Da ich aber nur rumgespielt habe, hat mich das nicht gestört. Also erstelle ich vier Zeilen als solche:

Tabelle 1

Col1       Col2      Col3     Col4
---------------------------------
Value1     NULL      NULL     NULL
Value1     NULL      NULL     NULL
Value1     NULL      NULL     NULL
Value1     NULL      NULL     NULL

Offensichtlich ist das seltsam und bricht die relationale Theorie, aber es war mir egal, da dies nur ein Tisch ist, mit dem ich herumgespielt habe. Bei dem, was als nächstes geschah, zog ich mir gerade die Haare aus. Nachdem ich diese Daten in hatte, konnte ich nicht tunetwas an den Tisch. Wenn ich versuchen würde, Spalte 2, Spalte 3 oder Spalte 4 in eine der Zeilen einzufügen, würde SQL Server mich anschreien, weil ich doppelte Zeilen habe: "Keine Zeile wurde aktualisiert. Die Daten in Zeile 1 wurden nicht festgeschrieben. Der Zeilenwert (s), die aktualisiert oder gelöscht wurden, machen die Zeile entweder nicht eindeutig oder ändern mehrere Zeilen (4 Zeilen). "

Mit anderen Worten, SQL Server erlaubte mir, doppelte Zeilen einzugeben, aber als ich versuchte, die Zeilen zu aktualisieren, um sie eindeutig zu machen, erlaubte es mir dies nicht, da es doppelte Zeilen als Grund gab. Das Schlimmste ist, dass ich auch keine Zeilen löschen konnte (ich bekomme die gleiche Fehlermeldung). Die einzige Lösung, die ich einmal in diesem Szenario gefunden habe, war, die Tabelle zu löschen und von vorne zu beginnen - was lächerlich ist.

Meine Frage ist, wie kann diese Art von Verhalten in einem bekannten Programm existieren, das sich über ein Jahrzehnt entwickelt hat? Bin ich derjenige, der kein Gehirn hat, und ich sollte das Verhalten von SQL Server akzeptieren? Für mich ist dies inakzeptabel, und SQL Server sollte es mir entweder nie gestattet haben, doppelte Zeilen einzugeben, oder es sollte mir gestattet haben, die doppelten Zeilen zu aktualisieren, bis sie alle eindeutig waren, und dann zu speichern.

Dies ist keineswegs als eine Art SQL Server-Hasspost gedacht. Es kommt relativ selten vor, dass ich auf ein solches Verhalten stoße, aber wenn ich das tue, kann es mich wirklich hinter mich bringen und mich verrückt machen. Ich verstehe nur nicht, warum das Programm ein solches Verhalten aufweist. Zum Beispiel, warum um alles in der Welt habe ich es überhaupt zugelassen, die doppelten Zeilen einzugeben, wenn ich nicht vorhatte, das Problem zu beheben?

Ich erinnere mich, dass ich früher mit MS Access gearbeitet habe und auf dasselbe seltsame, archaische Verhalten gestoßen bin. Einige Male musste ich große Datenmengen kopieren, die Tabelle neu erstellen und wieder einspielen, nur weil Access es mir erlaubt hatte, etwas zu tun, was es nicht sollte, und jetzt blockiert es mich, Änderungen daran vorzunehmen - effektiv einen Deadlock erzeugen.

Also, was ist hier los? Benötige ich einen Paradigmenwechsel, wenn ich mich SQL Server nähere? Liegt das Problem bei mir oder bei SQL Server? (Sie können sagen, ich bin es, ich kann es nehmen.)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage