Многое из вышеперечисленного основано на этом

ел бы предсказать (действительно, обратный инжиниринг) rowid любой строки, которая должна быть вставлена ​​в таблицу sqlite (чтобы восстановить поток вставок sqlite, используя rowid некоторых таблиц в качестве внешнего ключа в других таблицах). Вставка может произойти после произвольной последовательности вставок и удалений. Как rowid определяется sqlite при вставке?

Это когда-либо увеличивающийся счетчик?

int64_t next_rowid() {
  static int64_t r = 0;
  return ++r;
}

Может быть, самый маленький ряд не используется?

// Algorithm description, not (likely) working code
static sorted_set<int64_t> deleted;
static int64_t top = 0;
int64_t next_rowid() {
  if(deleted.size()==0) deleted.push(++top);
  return deleted.pop_front();
}
void delete_rowid(int64_t r) {
  deleted.push(r);
}

Какая-то другая схема?

Неопределенные?

Ответы на вопрос(2)

Ваш ответ на вопрос