添加一些人到DB中,他们的ID增长采用了 connt++的方式,不能重复,即系第一个人的ID为1,第二个人的ID为2...以此类推。问题是,当我delete一个人之后(假如ID为2的人),那DB上就只有1.3.4.5...了但当我继续添加第六个人时,就出错了。因为count++,1.3.4.5(系统默认成为1.2.3.4),所以,第六个人的ID为5,与之前的5重复,有冲突。添加不能成功。我知道只要将SQL的语句中的count改为MAX就可以解决这个问题,但是,现在面对的是客户,客户在用着系统,不能update数据库,也由于政治原因不能接触数据库。如果全部删掉那5条数据,重新增加,也不行,因为3.4.5都有人在调用着借问一声,各位大大,有什么妙招没?本人在线等~~~

解决方案 »

  1.   

    你能改的都什么?数据库不能建个sequence什么的?
      

  2.   

    create table #TT
    (
     ID int identity(1,1) primary key,
     num int
    )
    insert into #TT select 1
    insert into #TT select 2
    insert into #TT select 3
    insert into #TT select 4
    insert into #TT select 5delete from #TT where ID=5insert into #TT select 6select * from #TT
    ID          num
    ----------- -----------
    1           1
    2           2
    3           3
    4           4
    6           6
      

  3.   

    create table #TT
    (
     ID int identity(1,1) primary key,
     num int
    )
    insert into #TT select 1
    insert into #TT select 2
    insert into #TT select 3
    insert into #TT select 4
    insert into #TT select 5delete from #TT where ID=5insert into #TT select 6select * from #TTdelete from #TT where ID=1
    insert into #TT select 1select * from #TT
    ID          num
    ----------- -----------
    2           2
    3           3
    4           4
    6           6
    7           1
      

  4.   

    不改程序或sql大概不能解决。
      

  5.   

    哥们,先谢谢你了
    第一,现在的都在用着,肯定不能删除,
    第二,不能更新,是因为涉及到政治的原因,不能接触他们的DB,也是这个原因。
    第三,代码如下private String getNewPersonNo(String MemberID)
            {
                String newPersonNo = "";
                SqlCommand sqlCmd = new SqlCommand("SELECT MemberID,MembershipNo + '-' + RIGHT('00' + CONVERT(NVARCHAR,(SELECT count(PersonNo) + 1 FROM MEMBER_SubMember WHERE MemberID = @MemberID)),2) AS NewPersonNo FROM MEMBER_Member WHERE MemberID = @MemberID", _sqlConn);
                sqlCmd.Parameters.Add("@MemberID", SqlDbType.Int).Value = MemberID;
                SqlDataReader sqlDR = sqlCmd.ExecuteReader();
                if (sqlDR.Read())
                {
                    newPersonNo = sqlDR["newPersonNo"].ToString();
                }
                sqlDR.Close();
                return newPersonNo;
            }
    第四,大家看清楚点哈,现在由于政治原因,不能接触数据库,不能update,只能看着网站想办法添加多一个人谢谢~~
      

  6.   

    另外有主键设置了,就是因为这样,count才出问题,用MAX可以解决,但是现在不能碰数据库,只能看着网站来想办法添加一个人。
      

  7.   

    楼上的老大,有什么比较好的将MS-SQL的书吗、存储过程,游标什么的
      

  8.   

    inster into table values(select top 1 id from table order by id desc +1)
      

  9.   

    哥们,不能动DB和程序啊。。XG怎么那么多政治原因啊
      

  10.   

    1、SQL SERVER:自增主键
    2、Oracle:sequence
    3、不能改数据库:取max,不要取count别无他路……
      

  11.   

    那就遍历一遍数据表吧:       private int GetSerial()
           {
                int iSerial = 1;
                foreach (DataRow dr in YourDataTable.Rows)
                {
                    if (int.Parse(dr[Serial].ToString()) == iSerial)
                    {
                        iSerial++;
                    }
                    else
                    {
                        break;
                    }
                }
                return iSerial;
              }
      

  12.   

    这个系统是2006年做的,那时候用的count嗯,我就觉得郁闷。我都期待高手啊急死了,客户在等着,这情况还是第一次遇到呢
      

  13.   

    不让修改数据库 怎么删除的啊 
    是不是谁删除了才遇到这个BUG的 
    那就把那个删除的恢复 照旧用 ,发个通知禁止删除 不删除 就没BUG了 
      

  14.   

    这还真牛,这么明显的bug,用了3年都没遇到
      

  15.   

    先说说可以改那些,db不能动,程序不能动,那怎么改
    除非,配置里预留了这个bug的开关...
      

  16.   

    找出不在ID中的最小的大于零的整数,insert 入DB此条记录再做增加就可以了。
      

  17.   

    在不在?如果你说都不可以通过PLSQL或者其它手工方法增加入DB数据库记录,那么搞不定。如果可以,那么找出不在ID中的最小的大于零的整数,insert 入DB此条记录再做增加就可以了。
      

  18.   

    给大家点总结吧,免得说我不厚道。因为这个问题是现场的技术支持,但条件有限制。不能动DB和程式所以,只能想其他的办法了,比如我那个问题,我要添加的 那个人,其实可以看是个(假设有个member叫A)guest的身份,不是member(会员)的身份,当他报名时不享受到会员的折扣优惠。而member里面可以添加sub-member,其中有supouse和child,这两个都是会员身份,而guest则是朋友,客人一类,不能享受会员的待遇。而会员身份可以转为非会员的,也就是A,本来是member身份,我将它改为non-member身份,那他的supouse和child也就跟着是non-member身份了。然后将那个要添加的guest身份,当成supouse或child,再报名就添加可以了。然后结账后再将A的身份(现在为non-member)转换为member。这一切之所以可以进行,是因为是现场给客户解决需求的吧。总之,非常感谢大家的帮助。。感谢万分!!!
      

  19.   


    谢谢哥们了,其实这些都已经做了的,也已经fixed所有的bug了,但是某种原因它就不让你update啊所以那时候要我解决我也很无奈还好带我的人厉害,系统是他写的。呵呵
      

  20.   

    【原创家庭记账簿1.1,简单实用,欢迎工薪阶层、家庭主妇下载使用
    http://download.csdn.net/source/1842593】
      

  21.   

    那就不要使用此键为主键了 用GUID作主键