更新するたびに何千もの行を追加するテーブルがあります。各行は、単一項目の現在の値を示します。MySQLの複数の列に対して一意制約のキーとしてタイムパンを指定するにはどうすればよいですか?
ある時間間隔、たとえば1時間の間、特定のItemIDに対して1つの挿入を許可する制約を追加したいとします。言い換えれば
私は私のテーブルの一意性制約も私のテーブルに「ITEMID」と「タイムスパン」を1列にしたいと思います。
は、だから、私は何とかこのような何かを追加するだろうと思った:
BETWEEN DATE_ADD(NOW(),INTERVAL -1 HOUR) AND NOW() AS timespan
私は私のテーブル変更(「ITEMID」は、私のテーブルでちょうど列無関係である」)
ALTER TABLE `items_update` ADD UNIQUE `unique_timespan`(`itemID`, `timespan`);
これを行うことができますか、またはこれをチェックするネストされたINSERTクエリを作成する必要がありますか?
私はあなたの解決策が間違っていると確信していますが、より多くのコンテキストを提供する必要があります。何をしようとしているのですか、itemIdは何ですか、あなたのスキーマはどのように見えますか? – wvdz
もちろん私のコードは間違っていることがわかります。 itemIDは何でもかまいません。それは私のテーブルの単なる列です。問題は「タイムスパン」です。 マルチカラム制約のユニークな部分がタイムパンであることがわかりました。 – Sprazer
私たちの靴に身を置こうとすると、あなたは何をしているのか分かりません。あなたがしようとしていることに関する文脈を提供する。たとえば、「itemIDが同じ行を頻繁に挿入しないようにしたい」という理由は明確ではありません。または、あなたは 'BETWEEN ...'コードを – wvdz