对于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
以sqlserver为例,可用如下语句设置:create table test
(id int identity(1,1),primary key(id),
name varchar(10))
其中identity(1, 1)为设置主键自增的部分,前边一个1表示从1开始计数,后边一个1表示每次增加的数量。primary key(id)代表id列为主键。
连续执行如下语句:
insert into test(name) values ('a')
insert into test(name) values ('b')
insert into test(name) values ('b')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)