2017-09-01 133 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