【发布时间】:2017-01-31 06:19:02
【问题描述】:
我有以下查询:
"INSERT INTO `occ_apps` (`occ_date`, `service_tag`, `counter`) VALUES (?, ?, '1') ON DUPLICATE KEY UPDATE `counter` = (`counter`+1)"
目前,当occ_date 或service_tag 连续匹配时,它会增加counter。
其中occ_date 和service_tag 是unique 字段,我无法为这两个唯一字段设置主键。
我运行了以下内容:
ALTER TABLE occ_apps
DROP PRIMARY KEY,
ADD PRIMARY KEY (occ_date, service_tag);
我明白了,错误:
`#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key`
我希望它仅在 occ_date 和 service_tag 在一行中都匹配(已经存在)时更新(增加)计数器,否则它应该插入一个新行。
Software version: 5.5.53-MariaDB-1~wheezy - mariadb.org binary distribution
当我运行DESC occ_apps 时,我得到:
Field Type Null Key Default Extra
serial_no int(255) NO PRI NULL auto_increment
occ_date varchar(255) NO UNI NULL
counter int(255) NO NULL
service_tag varchar(255) YES UNI NULL
【问题讨论】:
-
ADD UNIQUE KEY (occ_date, service_tag)这应该对你有帮助。 -
你能分享
desc occ_apps的结果吗? -
@KeyurShah 总是更好地询问 SHOW CREATE TABLE
-
@KeyurShah 用
desc occ_apps的结果更新了问题 -
你的柜台到底应该持有什么?
标签: mysql primary-key multiple-columns unique-index on-duplicate-key