1

我有这个问题..我正在尝试使用锁定记录进行更新。我正在使用 php,并且我使用 oracle 作为数据库。我没有完全理解,但我设法复制了以前的开发人员代码并使其工作。

它正在使用 odbc_exec()、odbc_fetch_row()。我认为这应该用于微软访问数据库。但我不知道。而且我还使用 jquery 来获取这个 php 文件(使用 jquery post)并附加到当前页面。

但是现在我的上级要求我确定一个人是否正在编辑一条记录。然后另一个不能再编辑它了。他们说关于不关闭连接的事情。php 在加载 1 个页面后不能关闭与数据库的连接(当它使用 jquery 像我的那样获取页面时)?据我所知,如果页面已加载。与数据库的连接已关闭。

我想试试这段代码,但我担心如果我错了,连接会挂起。

现在我的 sql 是这样选择所有公司的。

$sqlStr ="select * from company";
$rs  = odbc_exec($GblConnOra , $sqlStr);
while (odbc_fetch_row($rs)){
   $company_name=odbc_result($rs,"company_name");
    $company_id=odbc_result($rs,"company_id");
}

并选择要编辑的公司

$sqlStr ="select * from company where company_id='34'";
$rs  = odbc_exec($GblConnOra , $sqlStr);
while (odbc_fetch_row($rs)){
   $company_name=odbc_result($rs,"company_name");
}

更新

$sqlStr ="update compay set company_name=? where company_id=?";
$stmt = odbc_prepare($GblConnOra , $sqlStr);
$res = odbc_execute($stmt, array($company_name, $company_id));

我认为sql会是这样的。锁定记录。

$sqlStr ="select * from company for update skip locked";
$rs  = odbc_exec($GblConnOra , $sqlStr);
while (odbc_fetch_row($rs)){
   $company_name=odbc_result($rs,"company_name");
    $company_id=odbc_result($rs,"company_id");
}

我可以这样做吗?我的 sql 用于选择要编辑的行是什么?我的 sql 将用于更新行吗?

据我了解,在调用更新提交或回滚后,此锁将被释放。

4

0 回答 0