Use o Tablestore SDK for Node.js para adicionar uma coluna de chave primária com incremento automático a uma tabela de dados, gravar linhas nessa coluna e recuperar os valores gerados.
Pré-requisitos
Antes de começar, verifique se você tem:
Um cliente inicializado. Para mais informações, consulte Inicializar um cliente do Tablestore.
Compreenda o comportamento da coluna de incremento automático
Os valores de uma coluna de chave primária com incremento automático são únicos e monotonicamente crescentes, mas não necessariamente sequenciais dentro de uma partição que compartilha o mesmo valor de chave de partição.
Crie uma tabela de dados com uma coluna de chave primária de incremento automático
Ao criar uma tabela de dados, defina uma coluna de chave primária sem chave de partição como incremento automático, configurando sua option como AUTO_INCREMENT. A coluna deve usar o tipo de dado INTEGER. Uma tabela pode ter no máximo uma coluna de chave primária com incremento automático. Não é possível adicionar esse recurso a uma tabela existente.
Os valores da coluna de chave primária com incremento automático são inteiros longos assinados de 64 bits. Apenas colunas sem chave de partição suportam a opção AUTO_INCREMENT.
Exemplo
O exemplo a seguir cria a tabela test_table com duas colunas de chave primária: id (chave de partição, 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);
});
}
Grave dados
Ao gravar uma linha, defina o valor da coluna de incremento automático como TableStore.PK_AUTO_INCR, um marcador que instrui o Tablestore a gerar o valor. Para recuperar o valor gerado (por exemplo, para usá-lo em uma leitura ou atualização subsequente), defina returnType como TableStore.ReturnType.Primarykey em returnContent.
Exemplo
O exemplo a seguir grava uma linha na tabela test_table e imprime a chave primária gerada.
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));
}
});
}