发布时间:2010-05-31 14:59 来源:未知
以下的文章主要向大家描述的是PHP + MySQL事务操作的实际应用代码演示,我们大家都知道在实际LAMP的应用中,一般PHP所使用的是AdoDB来对MySQL数据库进行操作,下面给出AdoDB相应的代码方便大家查阅:
< php // ... $adodb->startTrans();
实际,getOne所调用的查询也可以直接放到rowLock来进行,这里只是为了演示效果能更明显些。 $adodb->rowLock('book', 'book_id = 123'); $bookNumber = $adodb->getOne("SELECT book_number FROM book WHERE book_id = 123"); $adodb->execute("UPDATE book SET book_numberbook_number = book_number - 1 WHERE book_id = 123"); $adodb->completeTrans(); // ... >
其中,rowLock的方法就是调用的FOR UPDATE来实现的行锁,你可能会想把“FOR UPDATE”直接写到$adodb->getOne()调用的那条SQL语句里面去实现行锁的功能,不错,那样确实可以,但是并不是所有的数据库都使用“FOR UPDATE”语法来实现行锁功能,比如Sybase使用“HOLDLOCK”的语法来实现行锁功能,所以为了你的数据库抽象层保持可移植性,我还是劝你用rowLock来实现行锁功能,至于可移植性就交给AdoDB好了,嗯,有点扯远了,今儿就说到这里了。 上述的相关内容就是对PHP + MySQL事务操作的代码演示的描述,IT技术网itjs.cn整理分享给学习MySQL的朋友,希望大家喜欢这样的Mysql文章或资料。 附: AdoDB中存在一个setTransactionMode()方法,能够设置事务的隔离级别,如下: SetTransactionMode allows you to pass in the transaction mode to use for all subsequent transactions for that connection session. Note: if you have persistent connections and using mysql or mssql, you might have to explicitly reset your transaction mode at the beginning of each page request. This is only supported in postgresql, mssql, mysql with InnoDB and oci8 currently. For example:
上面说了这么多内容,是关于对PHP + MySQL事务操作的代码演示的介绍,不知道各位对MySQL的认识是不是更上一层楼了,时时关注ITJS,学习最新Mysql技术。