CDT  v4.2.0
инструменты разработчика

◆ available_primary_key()

template<name::raw TableName, typename T , typename... Indices>
uint64_t eosio::multi_index< TableName, T, Indices >::available_primary_key ( ) const
inline

Возвращает свободный первичный ключ.

Возвращает
Доступное (неиспользованное) значение первичного ключа.

Замечания: Предназначено для таблиц, где первичные ключи строго автоинкрементируются и контракт никогда не задаёт произвольные значения. Нарушение этого ожидания может привести к тому, что таблица будет казаться заполненной из‑за невозможности выделить свободный первичный ключ. В идеале метод используют только для выбора первичного ключа новых строк в таблицах, изначально рассчитанных на автоинкремент без произвольных значений со стороны контракта. Нарушение этого соглашения может дать ложное ощущение переполнения при наличии свободного места.

Пример:

// This assumes the code from the constructor example. Replace myaction() {...}
void myaction() {
address_index addresses(_self, _self.value); // code, scope
// add to table, first argument is account to bill for storage
addresses.emplace(payer, [&](auto& address) {
address.key = addresses.available_primary_key();
address.first_name = "Daniel";
address.last_name = "Larimer";
address.street = "1 EOS Way";
address.city = "Blacksburg";
address.state = "VA";
});
}
}
EOSIO_DISPATCH( addressbook, (myaction) )

См. определение в файле multi_index.hpp строка 1366