【问题标题】:Mysql Insert new row on 2 primary keyMysql在2个主键上插入新行
【发布时间】:2013-07-10 11:05:27
【问题描述】:

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

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, ...)

否则应该更新

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

【问题讨论】:

    标签: mysql logic smarty primary-key innodb


    【解决方案1】:

    使用INSERT ... ON DUPLICATE KEY UPDATE

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

    【讨论】:

    • 感谢您的回答,但这不是我的问题的解决方案。 1)gmt 不一定是主要的。2)如果 city 和 gmt 都不存在,我想更新;否则 {插入新行}
    • @УрматЖеналиев 你是什么意思gmt 不一定是主要的?在您发布的表格中,您有 PRIMARY KEY (`gmt`)
    • 对不起,我的英语。 gmt 必须是主要的
    • @УрматЖеналиев 使用不同的主键
    猜你喜欢
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 2014-12-07
    • 2015-06-09
    • 2016-06-15
    • 2015-04-17
    相关资源
    最近更新 更多