2013-08-08 2 views
-1

La requête de mise à jour ne met pas à jour les valeurs dans la table temporaire dans mysql.requête de mise à jour sur le problème de table temporaire - 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; 

La procédure ci-dessus stockée retourne ligne vide

+0

est-il un autocommit défini sur false? –

+1

Avons-nous oublié une déclaration INSERT quelque part? –

+2

Eh bien, quand il n'y a pas de données dans la table, il n'y a rien à mettre à jour. Aussi simple que cela. – fancyPants

Répondre

0
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 mettra à jour lignes existantes.

Dans la mesure où je peux voir, vous venez de créer la table. Donc c'est vide. Il n'y a simplement aucune ligne à mettre à jour. Peut-être cherchez-vous INSERT au lieu de UPDATE? Ou peut-être vous exemple ne met pas l'accent sur le problème réel ?

Questions connexes