mysql> LOCK TABLES real_table WRITE, insert_table WRITE;
mysql> insert into real_table select * from insert_table;
mysql> UNLOCK TABLES;
mysql> insert into real_table select * from insert_table;
mysql> UNLOCK TABLES;
解决方案 »
- 使用swfupload上传,出现Server (IO) Error错误!
- 向大家请教一个问题:PHP无法调用EXE 具体代码以下,您能帮我看下吗?
- 验证码乱码问题
- 请问该规则如果重写rewrite
- 火星来的菜鸟问题===>用php怎么建立服务端的变量?用$serv = 1;那每次请求这个页面的时候都会把$serv重置成1!
- jpgraph库的问题 求助
- 高效替换字符串的问题
- 需求帮助》》》
- 奉献一段域名查寻的代码,同时讨论一下里面的同名(root)的checkbox提交后是如何处理的?
- phplib得template类在处理模板得图象上有问题哦。
- 关于LIMIT的一些疑惑……
- PHP and Access
$result = mysql_query("SELECT align FROM table WHERE id=$id");
$align = mysql_fetch_array($result);
$align = $align['align'];
$align_info = explode(',', $align);
$align_count = count($align_info);
$p_class = 0;
for ($i=0; $i<$align_count; $i++) {
if (!ereg("^$pid\.", $align_info[$i])) {
continue;
}
$p_align_info = explode('.', $align_info[$i]);
$p_class = $p_align_info[1];
break;
}
$is_other = 0;
for ($i=$i+1; $i<$align_count; $i++) {
$o_align_info = explode('.', $align_info[$i]);
$o_class = $o_align_info[1];
if ($o_class <= $p_class) {
$align_info[$i] = "$my_align,$align_info[$i]";
$is_other = 1;
break;
}
}
if ($is_other) {
$align = implode(',', $align_info);
} else {
$align .= ',' . $my_align;
}
$set_query = "align='$align'";
mysql_query("LOCK TABLES table WRITE");
mysql_query("UPDATE table SET $set_query WHERE id='$id'");
mysql_query("UNLOCK TABLES");
这是不允许写的锁定,有没有不允许读的锁定,这个办法没有用,我连着回复了几篇,还是丢失了好几条。
MySQL不支持事务环境,所以如果你想要保证在一个SELECT和一个UPDATE之间没有其他线程到来,你必须使用LOCK TABLES。下面显示的例子要求LOCK TABLES以便安全地执行:
mysql> LOCK TABLES trans READ, customer WRITE;
mysql> select sum(value) from trans where customer_id= some_id;
mysql> update customer set total_value=sum_from_previous_statement
where customer_id=some_id;
mysql> UNLOCK TABLES;
没有LOCK TABLES,另外一个线程可能有一个机会在执行SELECT和UPDATE语句之间往trans表中插入一个新行。 通过使用渐增更改(UPDATE customer SET value=value+new_value)或LAST_INSERT_ID()函数,在很多情况下你能使用LOCK TABLES来避免。 你也可以使用用户级锁定函数GET_LOCK()和RELEASE_LOCK()解决一些情况,这些锁保存在服务器的一张哈希表中并且用pthread_mutex_lock()和pthread_mutex_unlock()实现以获得高速度. 来自mysql手册