2017-09-01 182 views
0

我有有一個主鍵整數表:必須從以前的一個在數據庫中找到遞增的SQLite自動增加非主鍵

CREATE TABLE TBL (ID INTEGER PRIMARYKEY,ZID INTEGER) 

這ZID整型字段。

我可以做這樣的事情:

INSERT INTO TBL (zid) VALUES ((SELECT MAX(zid) + 1 FROM TBL)); 

然而,該整數字段的值會在某些時候,重置爲零。因此我想從最後一項增加,不一定是整個表中的最大值。

我該怎麼做?觸發器?

謝謝。

+0

爲什麼不能切換'zid'和'id'。您所要求的行爲是由'PRIMARY KEY AUTOINCREMENT'提供的。事實上,你想要的是'zid'作爲一個普通的主鍵。你想從'ID'找到什麼?爲什麼有兩個? – MrGumble

+0

@MrGumble我需要兩個,因爲zid的值可能不是唯一的,它取決於表中的其他字段。 – Michael

+0

你必須提供一個數據的例子;包括什麼時候(如果適用)不使用'zid',當'zid'默認爲0,'zid'爲1時,'zid'設置爲+1時。只需組成「ID」,「zid」和「a」的一些列。如果插入一個新值爲'a'的值已經存在,那麼'zid'是否設置爲+1? – MrGumble

回答

-1

怎麼樣的查詢:
SELECT zid + 1 FROM TBL ORDER BY id DESC LIMIT 1

這個選擇查詢你只會得到最後一行(+1)的值

+0

我會說你的查詢會導致與OP一樣的結果;並且它不保證'zid'被重置爲0(無論如何)。 – MrGumble

+0

不,那是不正確的。我的查詢從最後插入的行獲取zid值。他的查詢從表格的所有行中獲取最大值。 – paulknulst

+0

對不起,我站好了。 – MrGumble