Tam anahtarıyla tanımlanan bir satırdaki nitelik sütunlarını eklemek, değiştirmek veya silmek için Tablestore SDK for Java kullanın.
Önkoşullar
Tablestore SDK for Java yükleyin ve istemciyi başlatın.
Açıklama
Tam anahtarıyla tanımlanan bir satırı güncellemek için updateRow yöntemini çağırın. Nitelik sütunları ekleyebilir veya değiştirebilir, belirli bir sütunun belirtilen veya tüm sürümlerini silebilir ve atomik sayaçları kullanabilirsiniz.
public UpdateRowResponse updateRow(UpdateRowRequest updateRowRequest) throws TableStoreException, ClientException
Aşağıdaki örnekte, update_row_demo veri tablosundaki row1 satırı güncellenir ve col1 nitelik sütunu changed_val1 değerine ayarlanır.
String tableName = "update_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);
rowUpdateChange.put("col1", ColumnValue.fromString("changed_val1"));
client.updateRow(new UpdateRowRequest(rowUpdateChange));
Parametreler
UpdateRowRequest aşağıdaki parametreleri içerir.
|
|
|
|
|
|
|
|
|
|
|
Yerel işlem kimliği. Bu parametreyi yalnızca yerel bir işlemde verileri güncellerken belirtin. Kimliğin nasıl elde edileceği ve kullanılacağı hakkında bilgi için bkz. Yerel işlemleri kullanma. |
Satır değişikliği
rowChange parametresi RowUpdateChange türündedir ve aşağıdaki parametreleri içerir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Güncelleme koşulu. Varsayılan olarak Tablestore, satırın var olup olmadığını kontrol etmez. Koşulun nasıl yapılandırılacağı hakkında bilgi için bkz. Koşullu güncellemeleri kullanma. |
|
|
|
Dönüş türü. Varsayılan değer Atomik sayaçların nasıl yapılandırılacağı hakkında bilgi için bkz. Atomik sayaçları kullanma. |
|
|
|
|
Nitelik sütunu değiştirme yöntemleri
columnsToUpdate listesine değişiklik eklemek için aşağıdaki yöntemleri çağırın.
put: Bir nitelik sütunu ekler veya yeni bir sürüm yazar. Veri sürümü numarasını belirtebilirsiniz.deleteColumn: Bir nitelik sütununun belirtilen sürümünü siler.deleteColumns: Bir nitelik sütununun tüm sürümlerini siler.increment:INTEGERtüründeki bir nitelik sütununu atomik olarak artırır.
Yanıt
UpdateRowResponse aşağıdaki işleme özel alanı içerir.
|
|
|
|
|
|
|
|
Senaryolar
Belirtilen sürüm numarasıyla nitelik sütunları yazma
Nitelik sütunu için sürüm numarasını (milisaniye cinsinden zaman damgası) belirtmek üzere put yöntemine üçüncü bir bağımsız değişken iletin. Bu yaklaşımı, iş zamanına göre anahtarlanan geçmiş değerleri arşivlemek için kullanın.
String tableName = "update_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);
// Specify the version number (a millisecond timestamp) as the third argument.
long version = System.currentTimeMillis();
rowUpdateChange.put("col2", ColumnValue.fromString("val2"), version);
client.updateRow(new UpdateRowRequest(rowUpdateChange));
Bir nitelik sütununun belirtilen sürümünü silme
Diğer tüm sürümleri korurken bir nitelik sütununun tek bir sürümünü kaldırmak için deleteColumn yöntemini kullanın.
String tableName = "update_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);
// Delete the col2 value at the specified version (a millisecond timestamp).
rowUpdateChange.deleteColumn("col2", 1747893563831L);
client.updateRow(new UpdateRowRequest(rowUpdateChange));
Tam bir nitelik sütununu silme
Tek bir işlemde bir nitelik sütununun her sürümünü silmek için deleteColumns yöntemini kullanın.
String tableName = "update_row_demo";
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
PrimaryKey primaryKey = primaryKeyBuilder.build();
RowUpdateChange rowUpdateChange = new RowUpdateChange(tableName, primaryKey);
// Delete all versions of the col2 attribute column.
rowUpdateChange.deleteColumns("col2");
client.updateRow(new UpdateRowRequest(rowUpdateChange));