代码之家  ›  专栏  ›  技术社区  ›  DanM

SQL Server:合理的“自动增量”技术?

  •  0
  • DanM  · 技术社区  · 16 年前

    我第一次使用SQL Server2005,以前主要是使用MySQL。我习惯于使用自动增量在表中创建唯一的ID。

    总之…我在Java应用程序中工作,需要做以下操作。假定我的表有两列:itemid(int)和itemvalue(int)。

    这就是我想要做的(dbconn方法只是伪代码):

    dbconn.execSQL("begin tran");
    int nextID = dbconn.execSQLSelect("select max(itemID)+1 from itemTable");
    dbconn.execSQLInsert("insert into itemTable values " + nextID + ", 1000");
    dbconn.execSQL("commit tran");
    

    begin/commit tran语句是否处理第2行和第3行之间可能的争用条件?还是有一些TSQL等价于MySQL的“锁表”我需要做?

    2 回复  |  直到 16 年前
        1
  •  7
  •   Ender    16 年前

    只需将列设置为itemID IDENTITY ON 让MS SQL引擎处理它。单独处理身份增量是非常不稳定的。

        2
  •  2
  •   SLaks    16 年前

    你应该做一个 IDENTITY 列。