Ich habe eine Datenbanktabelle wie folgt:Primärschlüsselbedingung doppelte Schlüssel Ausnahmen mit Zeitreihendaten und DATETIME2
CREATE TABLE some_table
(
price FLOAT NOT NULL,
size FLOAT NOT NULL,
retrieved DATETIME2 DEFAULT SYSUTCDATETIME(),
runner_id INT NOT NULL,
FOREIGN KEY (runner_id) REFERENCES runner(id),
PRIMARY KEY (retrieved, price, size, runner_id)
);
CREATE INDEX some_table_index ON some_table (runner_id);
Diese Tabelle durch Sätze von Preis/Größendaten von einem Webdienst abgerufen bevölkert ist, die im Wesentlichen der Zeit -Serie in der Natur. Soweit ich das beurteilen kann (und ich habe eine Vergleichslogik in meinen Code geschrieben, um sicher zu gehen), werden Preis und Größe niemals in einem einzigen Satz von Einträgen dupliziert, die vom Webservice abgerufen wurden. Sie können jedoch in nachfolgenden Anfragen nach Preis-/Größendaten, die sich auf den gleichen Läufer beziehen, dupliziert werden.
Ich bekomme intermittierende Primärschlüssel Einschränkung doppelte Schlüssel Ausnahmen, obwohl ich meine Schlüssel aus einer hohen Auflösung Datum Zeit Wert sowie den Rest der Tabelle Spalten bilden. In diesem Stadium erwäge ich, den zusammengesetzten Schlüssel zugunsten eines automatisch generierten Primärschlüssels fallen zu lassen. Kann jemand vorschlagen, warum dies aufgrund des Tabellenschemas passieren könnte? Ich halte es für unwahrscheinlich, dass ich versuche, zwei getrennte Sätze von Preis-/Größendaten mit doppelten Werten gleichzeitig einzugeben, wenn man die Art des Codes und die Auflösung des Datumswerts berücksichtigt. Ich denke, es ist jedoch möglich - ich verwende asynchrone Methoden, um mit der Datenbank und dem Webservice zu interagieren.
Dank
bieten Sie einen Wert für die Zeitstempel oder verwenden Sie den Standardwert erzeugt durch 'SYSUTCDATETIME()' – derpirscher
Hallo, Ich habe versucht, auf den Standardwert erzeugt, indem sie sich ‚SYSUTCDATETIME()‘ als sowie einen Wert über 'DateTime.UtcNow()' zu liefern - hatte das gleiche Problem in beiden Fällen. Ich habe eine Lösung basierend auf was @bds in Bezug auf Präzision in seinem Kommentar unten erwähnt. – nefuller