1。有一个计数器,每次减一,减到0失败。
   譬如图书馆借阅系统。哪天看了一篇文章,反而被搞糊涂了。
2。有个表,每次调用插入一条语句,只能同时向这个表插入50条语句,超过则失败。
如果保证数据完整性?架设有几十台server同时操作这个库。
还有一种情况不知道我理解的对不对,就是有主键插入记录的时候,我们没有必要首先select去检测是否存在(因为即使select也不一定准),只需要根据插入判断返回值就行了。对吧?

解决方案 »

  1.   

    1. check 约束,强制>0
    2. 50个并发??不解,限制并发数,能描述的具体一点吗?
      

  2.   


    在该表中,check (person_id, community_id) unique就可以限制了
      

  3.   


    START TRANSACTION;
    update xxx set yyy=yyy-1;
    select yyy into varYYY from xxx;
    IF varYYYY>0 THEN
      COMMIT:
    ELSE
      ROLLBACK;
      

  4.   

    使用触发器。
    MySQL 中如何在触发器里中断记录的插入或更新?
    http://blog.csdn.net/ACMAIN_CHM/archive/2009/07/25/4380183.aspx
      

  5.   

    第2种方法除了触发器还有没有别的方法?用事务也可以吧?
    插入后select一下数目,然后rollback?
      

  6.   

    第一种方法我看过一篇文章是使用select .. for update貌似是其进行了行锁。谁能解释使用一下啊?