在其他地方,数据库操作工作得很好,但是在一个特定的表中,insert操作返回0,不插入任何行,也不会产生错误。
我使用的是sqflite: ^2.0.2+1版本。sale.serial = await db.insert(tableSale, sale.toMap());
表创建代码是:
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)
''');发布于 2022-05-05 17:54:38
我发现了问题。表创建代码中有UNIQUE($columnFbId) ON CONFLICT IGNORE),在冲突情况下,插入操作被忽略,没有颤振或数据库错误。
我通过添加ConflictAlgorithm发现了这一点。代码是:sale.serial = await db.insert(tableSale, sale.toMap(), conflictAlgorithm: ConflictAlgorithm.fail)
谢谢@nitishk72 72的提示。
https://stackoverflow.com/questions/72124378
复制相似问题