SQLite如何设置自动增长的主键?
1个回答
展开全部
id int identity(1,1) 是 SQL Server 的 自动递增列的写法。
对于SQLite
主键数据类型为 int 类型。
插入的时候,不传入数据, 就是默认为自动递增处理。
last_insert_rowid() 函数用于获取最新生成的 ID
sqlite> CREATE TABLE test_create_tab2 (
...> id integer,
...> val VARCHAR(10),
...> PRIMARY KEY (id)
...> );
sqlite> INSERT INTO test_create_tab2(val) VALUES ('NO id');
sqlite> select last_insert_rowid();
last_insert_rowid()
1
sqlite> INSERT INTO test_create_tab2(val) VALUES ('NO id 2');
sqlite> select last_insert_rowid();
last_insert_rowid()
2
sqlite> select * from test_create_tab2;
id|val
1|NO id
2|NO id 2
sqlite> INSERT INTO test_create_tab2(id, val) VALUES (100, 'id is 100');
sqlite> INSERT INTO test_create_tab2(val) VALUES ('NO id again');
sqlite> select * from test_create_tab2;
id|val
1|NO id
2|NO id 2
100|id is 100
101|NO id again
注意:
对于无主键的表
SQLite 中还有一个 伪列 rowid, 可以作为自动递增的查询处理。
sqlite> CREATE TABLE test_create_tab3 (
...> id integer,
...> val VARCHAR(10)
...> );
sqlite>
sqlite> INSERT INTO test_create_tab3(id, val) VALUES (1, 'Test1');
sqlite> INSERT INTO test_create_tab3(id, val) VALUES (2, 'Test2');
sqlite> INSERT INTO test_create_tab3(id, val) VALUES (100, 'Test100');
sqlite> INSERT INTO test_create_tab3(id, val) VALUES (101, 'Test101');
sqlite> select rowid, id, val from test_create_tab3;
rowid|id|val
1|1|Test1
2|2|Test2
3|100|Test100
4|101|Test101
对于SQLite
主键数据类型为 int 类型。
插入的时候,不传入数据, 就是默认为自动递增处理。
last_insert_rowid() 函数用于获取最新生成的 ID
sqlite> CREATE TABLE test_create_tab2 (
...> id integer,
...> val VARCHAR(10),
...> PRIMARY KEY (id)
...> );
sqlite> INSERT INTO test_create_tab2(val) VALUES ('NO id');
sqlite> select last_insert_rowid();
last_insert_rowid()
1
sqlite> INSERT INTO test_create_tab2(val) VALUES ('NO id 2');
sqlite> select last_insert_rowid();
last_insert_rowid()
2
sqlite> select * from test_create_tab2;
id|val
1|NO id
2|NO id 2
sqlite> INSERT INTO test_create_tab2(id, val) VALUES (100, 'id is 100');
sqlite> INSERT INTO test_create_tab2(val) VALUES ('NO id again');
sqlite> select * from test_create_tab2;
id|val
1|NO id
2|NO id 2
100|id is 100
101|NO id again
注意:
对于无主键的表
SQLite 中还有一个 伪列 rowid, 可以作为自动递增的查询处理。
sqlite> CREATE TABLE test_create_tab3 (
...> id integer,
...> val VARCHAR(10)
...> );
sqlite>
sqlite> INSERT INTO test_create_tab3(id, val) VALUES (1, 'Test1');
sqlite> INSERT INTO test_create_tab3(id, val) VALUES (2, 'Test2');
sqlite> INSERT INTO test_create_tab3(id, val) VALUES (100, 'Test100');
sqlite> INSERT INTO test_create_tab3(id, val) VALUES (101, 'Test101');
sqlite> select rowid, id, val from test_create_tab3;
rowid|id|val
1|1|Test1
2|2|Test2
3|100|Test100
4|101|Test101
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询