sqflite 插入 return 零

sqflite insert return zero

在其他地方,数据库操作完美无缺,但在一个特定的 table 插入操作中 returns 0 并且没有插入任何行,也没有产生错误。

我使用的是 sqflite: ^2.0.2+1 版本。 sale.serial = await db.insert(tableSale, sale.toMap());

Table 创建代码为:

db.execute('''
          create table $tableSale ( 
            $columnSerial integer primary key autoincrement, 
            $columnFbId integer not null,
            $columnBillID integer not null,
            $columnAmount real not null,
            $columnBalance real DEFAULT 0,
            $columnDiscount real DEFAULT 0,
            $columnFreight real DEFAULT 0,
            $columnAddedBy text not null,
            $columnDate text not null,
            $columnDateApproved integer,
            $columnFromPhone text not null,
            $columnToPhone text not null,
            $columnNote text,
            $columnDetail text,
            $columnItems text,
            UNIQUE($columnBillID) ON CONFLICT IGNORE)
          ''');

我发现了问题。 table 创建代码中有 UNIQUE($columnFbId) ON CONFLICT IGNORE) 并且发生冲突,插入操作被简单地忽略,没有 Flutter 或数据库错误。

我通过添加 ConflictAlgorithm 找到了这个。代码是: sale.serial = await db.insert(tableSale, sale.toMap(), conflictAlgorithm: ConflictAlgorithm.fail)

感谢@nitishk72 的提示。