SQLite如何设置自动增长的主键

用的C#,这段id int identity(1,1)哪里错了?为什么表什么都能创建,用SQL语句添加数据后就是ID没有数据,是空的,为什么?有什么语法错误?但是也没提示语法错误啊,就是ID列是空的

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
温馨提示:答案为网友推荐,仅供参考
相似回答