oracle php锁记录

时间:2012-10-17 08:05:21

标签: php oracle

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

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

但现在我的大四学生要求我确保如果一个人正在编辑一条记录。然后另一个不能再编辑了。他们说有些事情没有关闭连接。加载1页后(当它使用jquery来获取像我一样的页面时)php可以不关闭与数据库的连接吗?据我所知,如果页面被加载。与数据库的连接已关闭。

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

现在我的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用于更新行的内容是什么?

根据我的理解,这个锁将在更新提交或回滚被调用后释放。

0 个答案:

没有答案