php - 如何将此codeigniter查询转换为选择更新
问题描述
丢失更新是一个常见的 MySQL 问题,为了解决这个问题,应该将选择查询编辑为像这样的更新查询的选择
select * from users where id = 1 FOR UPDATE
以防止其他用户同时在同一行上工作。我想在codeigniter中通过将此查询编辑为更新查询的选择来执行此操作
public function get_row_data($id)
{
$this->db->where('id',$id);
$result = $this->db->get('users');
if($result && $result->num_rows() > 0)
{
return $result->row();
}
else
{
return false;
}
}
我可以使用上面的简单查询,但如果模型查询可以转换,我更喜欢。
谢谢
解决方案
似乎您想在 Mysql 中获取行级别锁定,并且 codeigniter 查询生成器不允许操纵其方法来生成自定义 sql 查询
$this->db->trans_begin();
$this->db->query('you query goes here');
// other task .....
if ($this->db->trans_status() === FALSE) {
$this->db->trans_rollback();
} else {
$this->db->trans_commit();
}
推荐阅读
- java - GC突然长时间暂停的原因
- javascript - 输入类型按钮 onclick 功能不起作用
- python - NameError - 用于导入文件的自定义用户函数中的“名称未定义”
- java - 通过eclipse将项目添加到weblogic时出现SAXNotRecognizedException
- sql-server - 如何将 Nvarchar 值转换为时间?
- c# - 将生成的文件保存在服务器上,而不是在 C# 中将其作为下载提供给用户
- javascript - 更改 VueJS 组件的类
- android - 我们如何获得顶部有刘海的屏幕尺寸
- python - 使用正则表达式提取部分字符串?
- c - 为信号量定义变量