比如
$sql = "insert into tbl (id, name) values (1, 'abc')"
mysql_query($sql)
如果插入失败,返回中扰掘值是false,否则李坦返回插入纪卖核录的条数。
下面举个例子可以加深理解:事务进行时的DML *** 作修改data buffer cache的一个数据块,新值换旧值。这里还需要另一个 某undo 中的可用数据块。
会经历下面步骤(没写出橘芦游跟锁有关的步骤):
1.首先生成重做圆销,即在 redo buffer 中写下两个变更向量,这两个变更向量分别用于两个数据块儿的变更;
2.存有新值的变更向量让data buffer cache中的数据块变更为新值,存有旧值的变更向量让 undo 中的数据块变更为旧值
3.同时在redo buffer和undo中对该事务都哗陵有一个是否提交的标记。两者的默认状态都是active的,即没有提交时刻处于激活状态
4.commit成功后,redo buffer信息全部写入redo file,同时修改两者中的事务提交标识为inactive。未commit的话,事务依旧是active,所以数据即使被写入了数据文件也没关系
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)