Это не выполняется:
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 говорят, что это невозможно и нецелесообразно, но не дает других объяснений.
Итак, поскольку ответ на «возможно ли это» определенно отрицательный / нецелесообразный, вопрос в большей или меньшей степени звучит «почему бы и нет»?