首頁 > 後端開發 > php教程 > php 如何执行mysql的 行锁定

php 如何执行mysql的 行锁定

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-23 13:20:58
原創
1829 人瀏覽過

要锁定一行,
require_once ("config.inc.php"); //数据库连接

mysql_query("set autocommit=0");
mysql_query("BEGIN");
mysql_query("SELECT * FROM `news` where id=1  for update ");
 echo "test";
?>
然后我在 ie窗口执行这个语,正常显示执行

我用chrome开一个窗口中,打开phpmyadim ,执行sql 语句 

delete  FROM `news` where id=1

居然删除了第一行,说明锁定没有成功,

在php中应该怎么写才对?


回复讨论(解决方案)

如果您对存储引擎使用FOR UPDATE,则受到查询检验的行会被进行写锁定,直到当前事务结束为止。

显然你的测试不符合描述的情况

如果您对存储引擎使用FOR UPDATE,则受到查询检验的行会被进行写锁定,直到当前事务结束为止。

显然你的测试不符合描述的情况


感谢版主回复 ,我现在最重要的是不知道在php中应该怎么写,上面的写法是否正确?

我主要想知道在php中如何写 悲观锁定行。请朋友 们帮忙

你写的并没有错,但你传递测试是错的
锁定(表锁、行锁)都只在当前连接中有效,关闭连接就解锁了

你的测试设计应该是在程序 a 正在执行
SELECT * FROM `news` where id=1  for update
时,程序 b 去执行
delete  FROM `news` where id=1

这个度是很难把握的,早了晚了都不行

你写的并没有错,但你传递测试是错的
锁定(表锁、行锁)都只在当前连接中有效,关闭连接就解锁了

你的测试设计应该是在程序 a 正在执行
SELECT * FROM `news` where id=1  for update
时,程序 b 去执行
delete  FROM `news` where id=1

这个度是很难把握的,早了晚了都不行



谢谢版主,知道写的没问题就好了
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
當遇到特定單字時替換文字檔案中的整行
來自於 1970-01-01 08:00:00
0
0
0
dockerfile - Docker如何設定程式自啟
來自於 1970-01-01 08:00:00
0
0
0
hosts檔案 裡邊是空的 如何 設定本地域名?
來自於 1970-01-01 08:00:00
0
0
0
如何使用複選框刪除 php 和 mysql 的行
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板