【问题标题】:update query on temporary table issue - mysql更新临时表问题的查询 - mysql
【发布时间】:2013-08-09 23:02:27
【问题描述】:

更新查询不会将值更新到 mysql 中的临时表中。

DECLARE _defaultDateTime DATETIME;
DECLARE _resourceTypeId CHAR(36);
DECLARE _billedUsageHrs DECIMAL(15,6);
DECLARE _unbilledusageHrs DECIMAL(15,6);
DECLARE _billedCost DECIMAL(15,6);
DECLARE _unBilledCost DECIMAL(15,6);
DECLARE _resourceIdentifier CHAR(36);

DROP TABLE IF EXISTS _usageTable;

CREATE TEMPORARY TABLE _usageTable(resourceinstanceId CHAR(36),billedusageinHrs DECIMAL(15,6), billedusageCost DECIMAL(15,6),                       unBilledusageinHrs DECIMAL(15,6), unbilledusageCost DECIMAL(15,6)) ENGINE=MEMORY;


UPDATE  _usageTable SET resourceinstanceId = 'a17b5e49-000c-11e3-8bfa-842b2bac06e5' WHERE 1 = 1;  

SELECT resourceinstanceId, billedusageinHrs, billedusageCost, unBilledusageinHrs, unbilledusageCost FROM _usageTable; 

上述存储过程返回空行

【问题讨论】:

  • 是否有任何自动提交设置为 false?
  • 我们是否在某处遗漏了 INSERT 语句?
  • 好吧,当表中没有数据时,就没有什么可更新的了。就这么简单。
  • 没有。但是当我尝试将值插入临时表时它可以工作。更新没有。
  • 解释一下。并展示整个过程。您认为我们如何在没有必要信息的情况下为您提供帮助?

标签: mysql temp


【解决方案1】:
CREATE TEMPORARY TABLE _usageTable(resourceinstanceId CHAR(36),
                                   billedusageinHrs DECIMAL(15,6), 
                                   billedusageCost DECIMAL(15,6),
                                   unBilledusageinHrs DECIMAL(15,6), 
                                   unbilledusageCost DECIMAL(15,6)) ENGINE=MEMORY;


UPDATE  _usageTable SET resourceinstanceId = 'a17b5e49-000c-11e3-8bfa-842b2bac06e5' WHERE 1 = 1;  

UPDATE 将更新现有行。

据我所知,您刚刚创建了表。所以它是空的。只是没有行要更新。

也许您正在寻找 INSERT 而不是 UPDATE ?或者你的例子没有强调真正的问题?

【讨论】:

    猜你喜欢
    • 2013-02-07
    • 1970-01-01
    • 2013-03-26
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 2018-08-03
    相关资源
    最近更新 更多