如何在crate中更新数组



我想知道如何在create .io中更新存储在数组中的值

  • 我有一个博客表- blog_tbl
  • 数据类型为数组的列- tags
  • A id
  • 在标签列中,我有- ["tag1","tag2","tag3"]

我想知道如何将'tag1'更改为'tag99'

I tried

update blog_tbl set tags['tag1'] = 'tag99' where id = '1';

还有我怎么在结尾加一个呢?让它-

["tag1","tag2","tag3","tag4"]

多谢

不幸的是,目前还不可能。数组元素只能使用下标符号(例如select tags[1] from blog_tbl;)来选择,但不能更新。也许可以添加一个GH问题来请求该功能。

您可以使用下面的模式:https://crate.io/docs/reference/sql/occ.html#optimistic-update

但是,这需要您在客户端执行修改。伪代码:

updated = False
while not updated:
    cursor.execute('SELECT array_field, "_version" FROM table WHERE id=1')
    row = cursor.fetchone()
    current_array_field = row[array_field]
    current_array_field.append('newtag')
    cursor.execute('UPDATE array_field = current_array_field WHERE id=1 AND "_version" = row[version]')
    if cursor.rowcount > 0:
        updated = True

这将使您的更新对于同一字段的并发更新是半安全的。

相关内容

  • 没有找到相关文章

最新更新