2015-10-06 37 views
3

我被要求在python中实现select中的HQL更新。我没有尝试过任何东西,因为我没有一个好主意我将如何去做。 由于选择更新会在我们禁用自动提交后取回行,并且通过在表中的特定行上实现锁定,直到我们提交并启用自动提交,在我看来,在hypertable中实现有点令人怀疑。 如何锁定Hypertable中的几行?执行select for update for hypertable query language

现在我有一个像

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

select * from foo; 
001 c1 a 
001 c2 b 

表我还是开始学习Hypertable的。

一些帮助将不胜感激。

回答

0

Hypertable不支持事务并且没有任何锁定或读取 - 修改 - 写入操作。不过,如果你只是想实现一个简单的更新,你可以在列如下设置MAX_VERSIONS 1选项:

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

然后每次插入时,它要么1)取代旧的价值,或者2)如果新值不存在,则插入新值。

+0

我被要求在表格中处理和存储解析的数据。所以在插入或更新之前,我需要检查它是否有重复和其他的东西。因此,如果行同时读取,那么会出现问题,因为其中一个会将它们更新为解析,而另一个会获取相同的行,并再次更新它们以解析不同的数据。 – Aladin