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 的提示。
在其他地方,数据库操作完美无缺,但在一个特定的 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 的提示。