You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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插件,按以下操作执行:

  1. 创建表后更新自增序列
    执行完建表语句后,立即执行更新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']);
  1. 插入数据验证效果
    插入第一条数据时,userid会自动从101开始:
await db.insert('tblUser', {
  'userName': 'John',
  'userContactNo': '75964348',
  'userCountryCode': '+1',
  'transactionCreatedDate': DateTime.now().millisecondsSinceEpoch
});

后续插入的userid会依次递增为102、103...完全符合预期效果。

注意事项

  • 该操作仅适合表刚创建且无数据的场景,若表已有数据,执行UPDATE会覆盖现有序列值,可能引发主键冲突。
  • 若表是首次创建,sqlite_sequence中可能还没有tblUser的记录,此时可改用INSERT语句:
    INSERT INTO sqlite_sequence(name, seq) VALUES('tblUser', 100);
    
    对应Flutter代码:
    await db.execute('INSERT INTO sqlite_sequence(name, seq) VALUES(?, ?)', ['tblUser', 100]);
    

内容的提问来源于stack exchange,提问作者Abhi Plx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 16:12:39