php - 这个交易代码工作正常吗?
问题描述
我使用此代码在 2 个表中插入数据,
try {
array(PDO::ATTR_PERSISTENT => true);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
// 1st insert
$db->exec("insert into users (id, username, password,permission) values (18, 'raman', 2002,3)");
//2nd insert
$db->exec("insert into table_11 (id,user_id1,amount) values (14, '130', '11300')");
$db->commit();
} catch (Exception $e) {
$db->rollBack();
echo "Failed : " . $e->getMessage();
}
这段代码工作正常但是当我通过使第二次插入错误测试事务时,因为我将表名更改为错误的表名,我发现第一次插入仍然有效并且即使第二次插入不起作用也能够添加新数据,我的问题为什么第一次插入有效?我使用 MySQL。
解决方案
我发现为什么这段代码不能按预期工作,我应该在创建表时使用 InnoDB,所以我删除了当前表并使用 InnoDB 存储引擎创建新表,现在它工作正常。
推荐阅读
- android - Firestore whereIn 查询文档是随机排序的
- c++ - 将公共成员函数指针传递给构造函数
- javascript - html输入框的“value”属性内的if语句
- android - Google Android TTS human readable names of voices
- python - 如何使用类对象作为方法的输入?
- c++ - 动态规划算法问题C++和Python实现时结果的差异?
- javascript - jQuery:在每个单词的最后一个单词之前插入“”
- r - R中的字符串到表
- firebase - Firebase ID 问题
- r - “标记”ggplot2中的刻度线?