通过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)状态时写入完全失败并被回滚或完全成功的想法。

一致性是指这样的想法,即只要您遵循事务性db写入的原则,就可以保证它以维护数据库“状态”的方式被写入(只要操作返回成功),即您定义的所有关系很满意。


  从 official documentation-SQLite实现可序列化的事务
  原子的,一致的,孤立的和持久的,即使
  事务因程序崩溃而中断,
  操作系统崩溃或计算机电源故障。


当然,您可能最终会错误地编写事务,因此,由于数据一致性不能保证数据的正确性,因此您应该实施测试用例并处理数据库写入的异常。

关于php - 通过PHP或Android处理SQLite时是否需要在更新后读取并随后验证更新的数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55700755/

10-10 21:01
查看更多