我想知道如何在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"]
非常感谢
答案 0 :(得分:1)
不幸的是,目前还不可能。只能使用下标表示法(例如:py:mod:
)选择数组元素,但不能更新。也许添加GH问题请求该功能。
答案 1 :(得分: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
这将使您的更新对于同一字段的并发更新半安全。