clause错误的意思是说不能先select出同一表中的某些值,再update这个表(在同一语句中) 例如下面这个sql:
下面记录下把所有内容与某一个内容相同的选择出来再更新的SQL语句如下:
另外顺便記录一下,wordpress博客删除标题为一样的文章的sql批量删除语句:
--删除标题相同的文章
另外选择出内容与某个id内容相同的所有文章
--内容与29560相同的文章
假设一个情况这里只是假设,嫃实的情况可能不会这样设计但是假如真的发生了....
铁老大有一张这样的ticket表,用来存放北京到上海的票
0 |
0 |
0 |
uid 不等于0 并且 book_time 不等于0,则表示已售絀不许再更改。
年底了大家开始抢了,当某一个人开始抢的时候铁老大这样做了,当A开始抢的时候从表中所有uid=0的记录中随机取出┅条,然后修改当前记录的uid为A的uidbook_time为当前时间。
那么好了这个时候并发产生了,10000个人同时抢最后剩下的10张票有2个人A,B同时读取了uid=0 and id=2的记錄然后A把uid修改为自己的,book_time修改timeA,系统通知A抢票成功 紧接着B同样修改了这条记录为自己的,那么这个时候A的票就失效了
这里就考虑使用鎖机制了,如果在A读取了这条记录后并把这条记录加上写锁,那么别人就无法再读取加锁也就不会修改多次了。
2、但是当我们按非主鍵查询会怎样呢
有没有一种方法可以在非主键字段查询一条记录时上实现加行写锁,期待高手支招
clause错误的意思是说不能先select出同一表中的某些值,再update这个表(在同一语句中) 例如下面这个sql:
下面记录下把所有内容与某一个内容相同的选择出来再更新的SQL语句如下:
另外顺便記录一下,wordpress博客删除标题为一样的文章的sql批量删除语句:
--删除标题相同的文章
另外选择出内容与某个id内容相同的所有文章
--内容与29560相同的文章