Почему нельзя использовать SQLite ROWID в качестве первичного ключа?

Это не выполняется:

create table TestTable (name text, age integer, primary key (ROWID))

Сообщение об ошибке:

11-23 11: 05: 05.298: ОШИБКА / База данных (31335): Ошибка 1 (таблица TestTable не имеет столбца с именем ROWID) на 0x2ab378 при подготовке «создать таблицу TestTable (текст имени, целое число возраста, первичный ключ (ROWID))».

Однако после создания TestTable это подготавливается и выполняется нормально:

create table TestTable (name text, age integer);

insert into TestTable (name, age) values ('Styler', 27);

select * from TestTable where ROWID=1;

Я потенциально мог бы увидеть ROWID как решение, требующее автоматического увеличения первичного ключа и внешнего ключа, которые никогда не будет использоваться в качестве заполненных данных на уровне приложения. Поскольку ROWID по умолчанию скрыт из select наборов результатов, было бы неплохо связать его с первичным ключом, сохраняя это спряталось n из логики приложения. OracleBlog: ROWNUM и ROWID говорят, что это невозможно и нецелесообразно, но не дает других объяснений.

Итак, поскольку ответ на «возможно ли это» определенно отрицательный / нецелесообразный, вопрос в большей или меньшей степени звучит «почему бы и нет»?

12
задан Faheel Ahmad 12 November 2017 в 17:09
поделиться