我有一个带有sqflite数据库的flutter应用程序,当我保存新记录时,它保存正常,但是当我更改并保存它时,它会中断并显示此错误:
await db.execute("
CREATE TABLE $registroTable(
$idColumn INTEGER PRIMARY KEY AUTOINCREMENT,
$viagemColumn INTEGER,
$categoriaColumn INTEGER,
$dateColumn DATE,
$tituloColumn TEXT,
$valorColumn FLOAT,
FOREIGN KEY ($viagemColumn) REFERENCES $viagemTable($idColumn),
FOREIGN KEY ($categoriaColumn) REFERENCES $categoriaTable($idColumn)
);");
});
发生异常:
SqfliteDatabaseException (DatabaseException(Error Domain=FMDatabase Code=19 "UNIQUE constraint failed: registroTable.idColumn" UserInfo={NSLocalizedDescription=UNIQUE constraint failed: registroTable.idColumn}) sql 'INSERT INTO registroTable (viagemColumn, categoriaColumn, dateColumn, tituloColumn, valorColumn, idColumn) VALUES (?, ?, ?, ?, ?, ?)' args [1, 1, 2019-10-27, milho, 15000.0, 1]})
答案 0 :(得分:0)
从该错误看来,您正在向表中插入(试图添加新行)。我相信已经存在具有相同ID的行,因此数据库会阻止您添加具有相同ID的另一行(我认为ID是唯一的)。
当您要更改值时,应该改用sqflite API的“更新”功能。