Я хотел бы знать, как я могу обновить значение, хранящееся в массиве, в 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"]
большое спасибо
К сожалению, в настоящее время это невозможно. Элементы массива могут быть выбраны только с использованием индексной записи (например, 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
Это сделает ваше обновление частично безопасным для одновременных обновлений одного и того же поля.