好像在Oracle里面有个序列器的概念,在SQL Server里有没有?

解决方案 »

  1.   

    把它取消就可以了
    增加时就这样
    insert into 表(id,a) values(select max(id)+1 from 表,'a')
      

  2.   

    當如果主鍵Oid時, 本身就是唯一的,
    在程序中要加進去,如果要每次insert時自動取最大值加一時
    Declare  @s int
      select @s=max(oid)+1  from表
    就行了,
    設oid為主鍵,當增加存在的oid時,會報錯的
      

  3.   

    那样不行的
    insert into 表(id,a) values(select max(id)+1 from 表,'a')我假设有两个用户同时对这个表进行操作,我这里说的是增加数据时,我要在程序里用到这个主键及ID,我如果用【select max(id)+1 from 表】 来得到的话,当我这个新ID的数据还没插入数据时,另外一个用户它也在操作(即:往这个表里增加数据),那么他也会用【select max(id)+1 from 表】 得到最新的ID(两个人得到的ID肯定会相同),当他们都往数据表里插入记录时,就会存在相同ID的记录,而ID是主键,这样就会出错。
      

  4.   

    那样不行的
    insert into 表(id,a) values(select max(id)+1 from 表,'a')我假设有两个用户同时对这个表进行操作,我这里说的是增加数据时,我要在程序里用到这个主键及ID,我如果用【select max(id)+1 from 表】 来得到的话,当我这个【新ID的数据】还没插入【数据表】时,另外一个用户它也在操作(即:往这个表里增加数据),那么他也会用【select max(id)+1 from 表】 得到【最新的ID】(两个人得到的ID肯定会相同),那么这样,一旦他们把数据添加到数据表中,就会存在主键冲突
      

  5.   

    在Oracle里,我们是用序列器来解决的...
      

  6.   

    insert 時進行事物處理就不會出現這樣的問題了 
    begin trans
      insert into 表(id,a) values(select max(id)+1 from 表,'a')
    commit trans
    if @@error=0
      rollback trnas
      

  7.   

    Softlee81307(孔腎)的方法
    也不能解决问题,关键是我要在程序中使用这个ID,比如往其他表里插入这个ID,如果回滚了,那我那些被添加到其他表的数据就会不正常了
      

  8.   

    用事物就會鎖表嘛,
    當一個用戶在用時,另一個用戶處在等待中
    不在後台做,在前台就用ado.connection對像
    ado.begintransado.committrans有錯則 ado.rollback
    絕對不會有得復的,你試一下
      

  9.   

    Softlee81307(孔腎):你好!
    按照你的办法,关键是我每次取到的ID,会有相同的
    你看:我假设现在有一个用户要对这个表【表1】进行添加操作,他首先得到最大ID【ID1】,但是他没马上将这个ID插入数据表,而此时又有另外的一个用户对这个表进行添加操作,他获取一个ID【ID2】,这个【ID1】和【ID2】肯定会相同,当然你说的在真正添加数据到数据表时,使用了事务,但是如果我这个【ID1】或者是【ID2】在程序中还要用做其他用,比如添加到另外一个表【表2】(显然,这两个表存在一个关联,但是由于特殊原因我没有建立这个关联),所以一旦这个【ID】没有被添加到数据表,那么【表2】里的数据就会出现错误
      

  10.   

    timestamp 数据库中唯一
    不知是否满足!
      

  11.   

    Softlee81307(孔腎):你好!
    按照你的办法,关键是我每次取到的ID,会有相同的
    你看:我假设现在有一个用户要对这个表【表1】进行添加操作,他首先得到最大ID【ID1】,但是他没马上将这个ID插入数据表,而此时又有另外的一个用户对这个表进行添加操作,他获取一个ID【ID2】,这个【ID1】和【ID2】肯定会相同,当然你说的在真正添加数据到数据表时,使用了事务,但是如果我这个【ID1】或者是【ID2】在程序中还要用做其他用,比如添加到另外一个表【表2】(显然,这两个表存在一个关联,但是由于特殊原因我没有建立这个关联),所以一旦这个【ID】没有被添加到数据表,那么【表2】里的数据就会出现错误
    -----------------------------------------
    在触发器中作哪些操作
      

  12.   

    楼主,你用这个uniqueidentifier绝对唯一的哦
      

  13.   

    dellair(dellair)你好,请问uniqueidentifier是什么东西?
      

  14.   

    czw1975(塞饭)你好,请问timestamp 是什么东西
      

  15.   

    select newid(),* from table