Flutter中设置SQLite表tblUser的userid自增起始值为101
如何在Flutter中设置SQLite自增字段起始值为101
SQLite的AUTOINCREMENT字段的自增序列存储在系统表sqlite_sequence中,每个带自增主键的表对应一条记录,seq字段保存当前最大自增值。要让userid从101开始,只需将sqlite_sequence中对应tblUser的seq值设为100(下一次插入时,自增会自动取seq+1)。
具体实现步骤(以sqflite插件为例)
假设你已在Flutter项目中集成sqflite插件,按以下操作执行:
- 创建表后更新自增序列
执行完建表语句后,立即执行更新sqlite_sequence的SQL:
UPDATE sqlite_sequence SET seq = 100 WHERE name = 'tblUser';
对应的Flutter代码示例:
// db为已初始化的数据库实例 await db.execute(''' CREATE TABLE tblUser( userid INTEGER PRIMARY KEY AUTOINCREMENT, userName TEXT NOT NULL, userContactNo TEXT NOT NULL, userCountryCode TEXT NOT NULL, transactionCreatedDate INTEGER NOT NULL ) '''); // 设置自增起始序列 await db.execute('UPDATE sqlite_sequence SET seq = 100 WHERE name = ?', ['tblUser']);
- 插入数据验证效果
插入第一条数据时,userid会自动从101开始:
await db.insert('tblUser', { 'userName': 'John', 'userContactNo': '75964348', 'userCountryCode': '+1', 'transactionCreatedDate': DateTime.now().millisecondsSinceEpoch });
后续插入的userid会依次递增为102、103...完全符合预期效果。
注意事项
- 该操作仅适合表刚创建且无数据的场景,若表已有数据,执行UPDATE会覆盖现有序列值,可能引发主键冲突。
- 若表是首次创建,
sqlite_sequence中可能还没有tblUser的记录,此时可改用INSERT语句:
对应Flutter代码:INSERT INTO sqlite_sequence(name, seq) VALUES('tblUser', 100);await db.execute('INSERT INTO sqlite_sequence(name, seq) VALUES(?, ?)', ['tblUser', 100]);
内容的提问来源于stack exchange,提问作者Abhi Plx
相关产品推荐
相关产品推荐

