我發現了硬性規定視圖沒有rowid,這是預期的嗎?這是一個簡化的例子。sqlite視圖沒有rowid值
create table t2 (u text);
insert into t2 values ('x');
insert into t2 values ('y');
create table t1 (t text, i integer);
insert into t1 values ('a',1);
insert into t1 values ('b',2);
insert into t1 values ('c',1);
insert into t1 values ('d',2);
create view v as select * from t1 join t2 on t1.i=t2.rowid;
select rowid,* from t1;
ro t i
-- -- --
1 a 1
2 b 2
3 c 1
4 d 2
select rowid,* from v;
ro t i u
-- -- -- ----------
a 1 x
b 2 y
c 1 x
d 2 y
我通過給t1添加'ID'列來解決這個問題,其中ID = rowid。
我在sqlite VIEW網頁上做了一個快速^ F'rowid',發現沒有引用rowid。在它的快速谷歌給出了許多關於NO ROWID的匹配,所以我沒有找到答案。
我想知道我是否濫用了該視圖。基本上,這個視圖是我提供將單個表連接在一起的單個表的一種方式。然而,我需要通過'rowid'訪問視圖。爲了避免關於爲什麼使用rowid而不是ID列的說法,原因是我的表是一次寫入(通過數據提取器),然後是隻讀的。數據提取器知道它輸入了什麼,然後知道rowid,然後避免創建一個冗餘列。
Thanx,我錯過了主要關鍵技巧。我確實添加了一個ID列,並在那裏重複了rowid。 Thanx爲NULL值插入技巧,我的數據提取器知道ID但尚未綁定它插入,而NULL將刪除綁定。好東西 :) – Phi