나는이 달성하기 위해 노력하고있어이 내가 유일하게 tbl_result 데이터베이스 테이블에 저장할 실시간 계산의 결과이며, 업데이트를 유지한다복합 기본 키 및 자동 증가 컬럼이 아닌 기본 키
INSERT INTO `tbl_result` (`var1`, `var2`, `var3`, `year`, `result`)
VALUES (%f, %f, %d, %d, %f)
ON DUPLICATE KEY UPDATE result=%f;
을 계산 결과가 변경 되더라도. 위의 내용은이 작업을 수행하는 가장 좋은 방법 인 것 같습니다. 나는 또한 여러 사용자와 참조 결과를 십자가에 고유 ID를 저장해야하기 때문에
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`)
);
을하지만 :
그러나이 var1
, var2
, var3
, year
는 기본 키해야 작동하려면. 다음 오류가 나타납니다.
오류 코드 : 1075. 잘못된 테이블 정의입니다. 하나의 자동 열만있을 수 있으며 키로 정의해야합니다.
MySql 버전은 5.5.31-0ubuntu0.12.04.1입니다. guid 값이있는 열의 기본값을 설정할 수 있습니까?
감사합니다, P.
P.S. 이것은 나에게 그럴듯한 시나리오처럼 들리지만, MySql에 제안을보고 할 수 있습니까? 이것에
현재 'PRIMARY KEY'를 'UNIQUE' 제약 조건으로 변경할 수없는 이유는 무엇입니까? – dan04
MySQL에는 실제 시퀀스가 없습니다. 시퀀스 (PostgreSQL, Oracle) 또는 ID (MSSQL)가있는 다른 데이터베이스로 전환 할 수 있다면 그렇게 할 수 있습니다 – mvp