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