php - 通过 PHP 或 Android 处理 SQLite 时是否需要更新后读取然后验证更新数据?

标签 php android sqlite

在通过 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/

相关文章:

php - 需要帮助查找我的 PHP 代码中的编码错误

java - 尽管之前在 AsyncTask 类中定义过,但 JSON 对象为 null?

java - 如何将文件的行号转换为字节偏移量(或使用 BufferedReader 获取每行开头的字节偏移量)?

python - 内存sqlite3数据库频繁出现 "OperationalError: unable to open database file"

php - 如何通过 PHP android 使用 twilio 调用电话时屏蔽电话号码?

php - 使用带密码的 Redis 和 Laravel

php - 调用服务器中存储的Python文件

android - Android 4.0 (API 14) 上的 java.lang.OutOfMemoryError

Python sqlite3错误

ios - Core Data 应用程序未能及时启动