在通过 PHP 或 Android 处理 SQLite 时是否需要在更新后读取然后验证更新的数据?
例如,
如果下面的代码返回TRUE,是不是就代表一切正常,不需要通过读取数据和原始数据进行比对验证?
public function updateRecord($C_ID,$C_Data)
{
try
{
$sql = "UPDATE C "
. "SET C_Data = :C_Data "
. "WHERE C_ID = :C_ID";
$stmt = $this->pdo->prepare($sql);
$stmt->bindValue(':C_ID', $C_ID);
$stmt->bindValue(':C_Data', $C_Data);
$stmt->execute();
return TRUE;
}
catch (\PDOException $e)
{
return FALSE;
}
}
最佳答案
SQLite 保证 ACID其中A是原子性,C是一致性的原则。
原子性 指的是写入要么完全失败并回滚,要么完全成功修改数据库 (db) 状态。
一致性是指只要遵循事务性数据库写入的原则,就可以保证以维护数据库的方式写入(只要操作返回成功) “状态”,即您定义的所有关系都得到满足。
From official documentation - SQLite implements serializable transactions that are atomic, consistent, isolated, and durable, even if the transaction is interrupted by a program crash, an operating system crash, or a power failure to the computer.
当然,您最终可能会错误地编写事务,因此您应该实现测试用例并处理数据库写入的异常,因为数据一致性 并不能保证数据正确性。
关于php - 通过 PHP 或 Android 处理 SQLite 时是否需要更新后读取然后验证更新数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55700755/