加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 在MySQL中获取未提交的数据

发布时间:2020-12-13 14:02:51 所属栏目:PHP教程 来源:网络整理
导读:在SQL Server中,我们可以在下面的SQL查询中编写以获取数据库中的未提交数据.这意味着仍处于事务和事务处理的数据尚未完成. SQL Server查询 Select * from TableName With(NoLock); 即使表被锁定,MySQL数据库中是否有任何等价性来获取数据?我正在PHP CodeIgn
在SQL Server中,我们可以在下面的SQL查询中编写以获取数据库中的未提交数据.这意味着仍处于事务和事务处理的数据尚未完成.

SQL Server查询

Select * from TableName With(NoLock);

即使表被锁定,MySQL数据库中是否有任何等价性来获取数据?我正在PHP CodeIgnitor尝试这个

发现一篇标题为“MySQL NOLOCK语法”的文章

http://itecsoftware.com/with-nolock-table-hint-equivalent-for-mysql

SQL Server WITH(NOLOCK)如下所示:

SELECT * FROM TABLE_NAME WITH (nolock)

为了与MySQL完全相同,我们使用SET SESSION命令更改会话隔离模式.

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
 SELECT * FROM TABLE_NAME ;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ;

你也可以在下面同样地:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;
SELECT * FROM TABLE_NAME ;
COMMIT ;

此语句将工作类似于WITH(NOLOCK),即READ UNCOMMITTED数据.我们还可以为全局连接设置隔离级别:

SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;

另外还有两个与隔离相关的系统变量也存在于MySQL服务器中:

SELECT @@global.tx_isolation; (global isolation level)
SELECT @@tx_isolation; (session isolation level)

或者在事务中设置隔离级别:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
GO

在代码点火器中,您可以使用前两个解决方案来包装查询,也可以使用全局选项.

为了您的参考,您可以使用以下代码:

$this->db->query("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE");
$this->db->trans_start();

// your code

$this->db->trans_complete();

更新1:

您可以在运行语句之前在查询中设置隔离级别.下面是简单的php mysqli代码tu使用隔离级别读取uncommited

//db connection
$mysqli = new mysqli('localhost','user','pass','db');

//set isolation level
$mysqli->query("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED");

//your Select Query
$results = $mysqli->query("SELECT * FROM tablename");


while($row = $results->fetch_assoc()) {
    //some statements
}

// Frees the memory associated with a result
$results->free();
$mysqli->query("COMMIT");
// close connection
$mysqli->close();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读