私はこれを達成しようとしています:
INSERT INTO `tbl_result` (`var1`, `var2`, `var3`, `year`, `result`)
VALUES (%f, %f, %d, %d, %f)
ON DUPLICATE KEY UPDATE result=%f;
これらは、tbl_result データベース テーブルに一意に格納し、計算結果が変化しても更新を維持したいリアルタイム計算機の結果です。上記は、これを行うための最良の方法のように思えます。
ただし、これが機能するvar1
には、、、、が主キーvar2
でvar3
あるyear
必要があります。
CREATE TABLE `tbl_result` (
`ID` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT ,
`var1` DECIMAL(6,2) UNSIGNED NOT NULL ,
`var2` DECIMAL(3,2) UNSIGNED NOT NULL ,
`var3` INT(11) UNSIGNED NOT NULL ,
`year` INT(4) UNSIGNED NOT NULL ,
`result` DECIMAL(8,4) NOT NULL ,
PRIMARY KEY (`var1`, `var2`, `var3`, `year`)
);
ただし、複数のユーザーとの結果を相互参照するために一意の ID も保存する必要があるためです。次のエラーが表示されます。
エラー コード: 1075。テーブル定義が正しくありません。自動列は 1 つしか存在できず、キーとして定義する必要があります
MySql のバージョンは 5.5.31-0ubuntu0.12.04.1 ですが、カラムのデフォルトを GUID 値で設定することはできますか?
ありがとう、P.
PSこれはもっともらしいシナリオのように思えますが、MySqlに提案を報告することは可能ですか?