2008-11-18 4 views
0

Essentiellement, je voudrais stocker des lignes dans une variable temporaire pour la vie d'une procédure dans MySQL.Comment dois-je stocker temporairement des lignes dans une procédure stockée?

Ma procédure va saisir une colonne de clés étrangères au début de la procédure. Une fois que j'ai fini de travailler avec eux, je veux mettre à jour le tableau pour indiquer qu'ils ont été traités. Il peut y avoir des insertions dans cette table pendant que ma procédure travaille sur son ensemble de données, donc je ne veux pas marquer incorrectement ces nouvelles lignes comme traitées. Je ne veux pas non plus verrouiller cette table et tenir le fil qui fait les inserts.

Une table temporaire est-elle la meilleure solution?

Répondre

1

La table temporaire sera le moyen le plus facile et probablement le meilleur pour résoudre ce problème.

+0

Oui, ce qui a fini par le faire. – Fredrick

1

Si c'est dans SQL Server, étudier à l'aide d'une variable de table à la place ...

Declare @MyFKs Table 
    (FkId Integer Primary Key Not Null, 
    isProcessed bit) 

Bien qu'ils ne sont pas aussi flexibles (Impossible d'ajouter plusieurs indices pour eux), les variables de table ne participent pas à la transaction La journalisation comme une table temporaire le fait, donc, pour les tables étroites, où vous stockez simplement une clé et au plus quelques colonnes de données, elles peuvent être plus performantes qu'une table temporaire.

+0

C'est en MySQL :) – Robert

+0

ahh ... désolé, alors la réponse est oui, utilisez les tables temporaires .. mais si elle gère plus de quelques milliers de lignes, assurez-vous de mettre l'index approprié (index) sur la table temporaire quand vous le créez ... –

Questions connexes