2015-10-06 2 views
3

Je suis invité à implémenter select pour la mise à jour dans HQL en python. Je n'ai rien essayé parce que je n'ai pas une bonne idée de la façon dont je vais m'y prendre. Comme sélectionner pour la mise à jour récupère des lignes après avoir désactivé la validation automatique et là en réalisant un verrouillage sur des lignes particulières dans la table jusqu'à ce que nous validions et activions l'autocommit, il me semble un peu douteux de l'atteindre. Comment pourrais-je verrouiller quelques lignes dans Hypertable?Implémenter select pour la mise à jour pour le langage de requête hypertable

Pour l'instant j'ai une table comme

CREATE TABLE foo (
    c1, 
    c2, 
    ACCESS GROUP default (c1, c2) 
); 

select * from foo; 
001 c1 a 
001 c2 b 

Je commence encore à apprendre hypertable.

De l'aide sera appréciée.

Répondre

0

Hypertable ne prend pas en charge les transactions et ne dispose d'aucune opération de verrouillage ou de lecture-modification-écriture. Toutefois, si vous êtes juste essayer de mettre en œuvre une simple mise à jour, vous pouvez simplement définir l'option MAX_VERSIONS 1 sur les colonnes comme suit:

 
CREATE TABLE foo (
    c1 MAX_VERSIONS 1, 
    c2 MAX_VERSIONS 1, 
    ACCESS GROUP default (c1, c2) 
); 

Ensuite, chaque fois que vous insérez, il sera soit 1) remplacer la valeur ancienne, ou 2) insérer la nouvelle valeur si elle n'existe pas déjà.

+0

On m'a demandé de gérer et de stocker des données analysées dans une table. Donc avant d'insérer ou de mettre à jour j'ai besoin de vérifier si c'est un doublon et d'autres choses. Donc, si les lignes sont lues simultanément, il y aura un problème car l'une d'entre elles les mettrait à jour et l'autre irait chercher les mêmes lignes et les mettrait à jour pour analyser différentes données. – Aladin