1

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

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

我想知道我将如何'tag1'改变'tag99'

我试过了

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

另外,我将如何在末尾添加一个?所以让它 -

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

非常感谢

4

2 回答 2

1

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

于 2015-08-07T13:39:43.633 回答
0

您可以使用此处找到的模式: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

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

于 2017-01-17T15:21:19.687 回答