Utilice el SDK de Tablestore para Node.js para agregar una columna de clave principal con incremento automático a una tabla de datos, escribir filas en dicha columna y recuperar los valores generados.
Requisitos previos
Antes de empezar, asegúrese de que cuenta con:
Un cliente inicializado. Para obtener más información, consulte Initialize a Tablestore client.
Comportamiento de la columna con incremento automático
Los valores de una columna de clave principal con incremento automático son únicos y aumentan de forma monótona, pero no necesariamente son secuenciales dentro de una partición que comparte el mismo valor de clave de partición.
Cree una tabla de datos con una columna de clave principal con incremento automático
Al crear una tabla de datos, designe una columna de clave principal que no sea clave de partición como incremento automático al establecer su option en AUTO_INCREMENT. La columna debe utilizar el tipo de dato INTEGER. Una tabla puede tener como máximo una columna de clave principal con incremento automático, y no es posible agregar esta función a una tabla existente.
Los valores de la columna de clave principal con incremento automático son enteros largos con signo de 64 bits. Solo las columnas que no son clave de partición admiten la opción AUTO_INCREMENT.
Ejemplo
A continuación se crea test_table con dos columnas de clave principal: id (clave de partición, STRING) e incr (incremento automático, INTEGER).
function createTableSample() {
var createParams = {
tableMeta: {
tableName: 'test_table',
primaryKey: [
{
name: 'id',
type: 'STRING' // Partition key — you provide this value on every write
},
{
name: 'incr',
type: 'INTEGER',
option: 'AUTO_INCREMENT' // Tablestore generates this value automatically
},
]
},
tableOptions: {
timeToLive: -1, // -1 means data never expires
maxVersions: 1
},
reservedThroughput: {
capacityUnit: {
read: 0,
write: 0
}
},
};
client.createTable(createParams, function (err, data) {
if (err) {
console.error('error:', err);
return;
}
console.log('success:', data);
});
}
Escritura de datos
Al escribir una fila, establezca el valor de la columna con incremento automático en TableStore.PK_AUTO_INCR, un marcador de posición que indica a Tablestore que genere el valor. Para recuperar el valor generado (por ejemplo, para usarlo en una lectura o actualización posterior), establezca returnType en TableStore.ReturnType.Primarykey dentro de returnContent.
Ejemplo
A continuación se escribe una fila en test_table e imprime la clave principal generada.
function putRowSample() {
var putParams = {
tableName: 'test_table',
condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null),
primaryKey: [
{ id: 'row1' },
// Use PK_AUTO_INCR as a placeholder — Tablestore replaces it with the generated value
{ incr: TableStore.PK_AUTO_INCR }
],
attributeColumns: [
{ 'col1': 'val1' }
],
// Return the full primary key so you can use the generated incr value in later queries
returnContent: { returnType: TableStore.ReturnType.Primarykey }
};
client.putRow(putParams, function (err, data) {
if (err) {
console.error('error:', err);
return;
}
// Request metadata and capacity units consumed
console.log("RequestId: ", data.RequestId);
console.log("Read CU Cost: ", data.consumed.capacityUnit.read);
console.log("Write CU Cost: ", data.consumed.capacityUnit.write);
// Print the generated primary key, including the auto-increment value
// This is only returned when returnType is set to Primarykey
if (data.row.primaryKey) {
console.log(JSON.stringify(data.row.primaryKey));
}
});
}