1
我試圖做到這一點:複合主鍵和自動增量列,但不是主要的關鍵
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.錯誤的表定義;只能有一個自動列,它必須被定義爲一個鍵
MySql版本是5.5.31-0ubuntu0.12.04.1,是否可以使用guid值設置列的默認值?
感謝, P.
附:這聽起來像是一個合理的場景,是否有可能向MySql報告建議?
爲什麼不能將當前的'PRIMARY KEY'更改爲'UNIQUE'約束? – dan04 2013-05-11 19:07:46
MySQL沒有真正的序列。如果您可以切換到具有序列(PostgreSQL,Oracle)或身份(MSSQL)的另一個數據庫,則可以執行此操作 – mvp 2013-05-11 19:08:24