とキーの例外を複製:主キー制約は、次のように私は、データベーステーブルを持っている時系列データと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);
このテーブルは、基本的に時間でのWebサービスから取得価格/サイズのデータのセットが移入されます - 本来は直列である。私が知る限りでは(そして私のコードにいくつかの比較ロジックを入れて確かめておきます)、価格とサイズは、Webサービスから取得された単一のエントリセットに重複することはありません。ただし、同じランナーに関連する価格/サイズデータの後続要求で複製されることがあります。
私は高解像度の日付時刻の値と他のテーブルの列から自分のキーを形成していますが、断続的な主キー制約が重複するキー例外が発生しています。この段階では、自動生成された主キーの代わりに複合キーを削除することを検討しています。誰もがなぜこれがテーブルスキーマに基づいて起こっているかもしれないかを提案できますか?私は、コードの性質と日付の時間値の分解能を考慮して、2つの別々の価格/サイズデータセットを重複した値で同時に挿入しようとは考えていません。私はそれが可能だと思います - 私はデータベースとWebサービスと対話する非同期メソッドを使用しています。
ありがとう
、あなたのタイムスタンプの値を提供しているか、あなたは ' – derpirscher
こんにちは)' SYSUTCDATETIME(によって生成されたデフォルト値を使用している、私は「)SYSUTCDATETIME(」によって生成されたデフォルト値に頼ってみましたとして、 「DateTime.UtcNow()」を介して値を提供するだけでなく、両方のケースで同じ問題が発生しました。私は以下の彼のコメントの正確さに関して@bdsが言及したものに基づいた解決策を持っています。 – nefuller