【数据库事务】不懂就要问
这两天研究了论坛上和手册上所有关于事务的资料。想问一个问题事务回滚的触发条件
$this->db->trans_begin();
$this->db->query('INSERT QUERY...');
$this->db->query('INSERT QUERY...');
$this->db->query('QUERY1');
if ($this->db->trans_status() === FALSE)
{
$this->db->trans_rollback();
}
else
{
$this->db->trans_commit();
}
(1)当QUERY出错时,QUERY1 = UPDATE user` SET sex` = -1 WHERE `uid` < 1 1ci直接显示语句错误
(2)当插入与当前字段类型不符的类型时,居然trans_status=TURE,并插入了三条数据
(3)当插入一个未定义的变量时QUERY1 = UPDATE user` SET sex` = -1 WHERE `uid` = $id。$id故意没申明。ci报错,trans_status居然还是TURE并且插入了前两条数据。。。
ci也用了2年了,感觉已经不小白了吧。。。感觉已经无力了。
当初是因为担心类似上面的$id返回null或是出错才想到要使用事务,因为id是在插入前查询数据得到的。现在看来好像事务只在于停电,死机才有用。。。求大神指教。还有$this->db->trans_start(TRUE); 这个传说中的测试模式一点效果都没有。。。还是插入了数据。是我用的方法不对吗。。。
测试环境为ci2.2.0下的严格模式。
页:
[1]