2017-07-17 6 views

Répondre

3

Vous pouvez considérer la table comme un dictionnaire inversé. Pour faire une mise à jour du dictionnaire, vous index sur la première clé:

q)tbl:([]XXX:1977 1987 1997) 
    q)dict:flip tbl 
    q)dict[`XXX;n]:2007 
    q)dict 
    XXX| 1977 1987 2007 

Par conséquent, pour faire une mise à jour inplace sur une table de la syntaxe suivante est utilisée:

q)tbl:([]XXX:1977 1987 1997) 
    q)tbl[`XXX] 
    1977 1987 1997 
    q)tbl[n;`XXX]:2007 
    q)tbl[`XXX] 
    1977 1987 2007 
+0

C'est ce que j'ai fait, merci. –

+0

J'ai une question de suivi: Comme c'est le cas maintenant, la mise à jour est enregistrée dans la mémoire. Cependant, si je veux que le changement persiste après le redémarrage de kdb, que faut-il faire? Autant que je comprends, nous devons être en mesure d'enregistrer les modifications sur le disque! –

+0

Il existe un certain nombre de méthodes dans lesquelles la table peut être enregistrée. – jomahony

0

version QSQL de réponse Jamies:

q)update XXX:2007 from `tbl where i=n 

Cela vous permet également d'utiliser la clause where basée sur d'autres colonnes dans la table