Mysql在2主键上插入新行

时间:2013-07-10 11:05:27

标签: mysql logic smarty primary-key innodb

我用谷歌搜索了这个问题,但没有发现任何东西。问题是这样的: 我有这样的表

CREATE TABLE IF NOT EXISTS `Hourly` (
  `gmt` bigint(20) NOT NULL,
  `city` int(11) NOT NULL,
  `temp` float NOT NULL,
  `temp_min` float NOT NULL,
  `temp_max` float NOT NULL,
  `pressure` float NOT NULL,
  `humidity` int(11) NOT NUL`enter code here`L,
  `temp_kf` float NOT NULL,
  `weather` int(11) NOT NULL,
  `icon` varchar(20) NOT NULL,
  `clouds` float NOT NULL,
  `wind_speed` float NOT NULL,
  `wind_deg` float NOT NULL,
  `rain_3h` float NOT NULL,
  `snow_3h` float NOT NULL,
  `sys_pod` varchar(255) NOT NULL,
  `received` bigint(20) NOT NULL,
   PRIMARY KEY (`gmt`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

问题是我想在gmtcity都不存在时插入新行,不是其中之一。 例如,我的表已经由

填充
INSERT INTO `Hourly` (`gmt`, `city`, ...) VALUES
(1373446800, 1, ...)

我想插入新行

INSERT INTO `Hourly` (`gmt`, `city`, ...) VALUES
(1373446800, 2, ...)

否则,应该更新

所以,我希望,我描述了我的问题,一些“聪明人”会帮助我。

1 个答案:

答案 0 :(得分:0)

使用INSERT ... ON DUPLICATE KEY UPDATE

INSERT INTO Hourly (gmt, city) VALUES
    (?, ?)
ON DUPLICATE KEY UPDATE
    city = ?