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