大牛一个关于SQLite3的设计有关问题
请教各位大牛一个关于SQLite3的设计问题
请教一个关于SQLite3的问题。
我创建了一个表,
CREATE TABLE table(
id INTEGER PRIMARY KEY,
username VARCHAR(100)
);"
这样的话当插入id为NULL时,会实现自动加一,
这里就有问题了,若我插入了10条数据,id从1到10,
这时我删除了其中的id = 5的一行数据,然后我在继续插入数据的时候,
需要先填充这个id = 5 一行数据,然后在插入数据时会从id=11开始插入。
也就是说,我每次插入数据的时候,需要从最小的序号开始插入。
这个sql语句要怎么写呢?
望各位大牛帮忙解决,在此先谢谢了。
------解决方案--------------------
请教一个关于SQLite3的问题。
我创建了一个表,
CREATE TABLE table(
id INTEGER PRIMARY KEY,
username VARCHAR(100)
);"
这样的话当插入id为NULL时,会实现自动加一,
这里就有问题了,若我插入了10条数据,id从1到10,
这时我删除了其中的id = 5的一行数据,然后我在继续插入数据的时候,
需要先填充这个id = 5 一行数据,然后在插入数据时会从id=11开始插入。
也就是说,我每次插入数据的时候,需要从最小的序号开始插入。
这个sql语句要怎么写呢?
望各位大牛帮忙解决,在此先谢谢了。
------解决方案--------------------
- SQL code
sqlite> CREATE TABLE zjf30366( ...> id INTEGER PRIMARY KEY, ...> username VARCHAR(100) ...> ); sqlite> sqlite> select * from zjf30366; id|username 1|a1 2|a2 3|a3 4|a4 5|a5 6|a6 7|a7 8|a8 9|a9 10|a10 sqlite> delete from zjf30366 where id=5; sqlite> select * from zjf30366; id|username 1|a1 2|a2 3|a3 4|a4 6|a6 7|a7 8|a8 9|a9 10|a10 sqlite> insert into zjf30366 values( ...> (select min(id)-1 from zjf30366 where id>1 and id-1 not in (select id from zjf30366)), ...> 'a11'); sqlite> select * from zjf30366; id|username 1|a1 2|a2 3|a3 4|a4 5|a11 6|a6 7|a7 8|a8 9|a9 10|a10 sqlite> insert into zjf30366 values( ...> (select min(id)-1 from zjf30366 where id>1 and id-1 not in (sele ct id from zjf30366)), ...> 'a11'); sqlite> select * from zjf30366; id|username 1|a1 2|a2 3|a3 4|a4 5|a11 6|a6 7|a7 8|a8 9|a9 10|a10 11|a11 sqlite>