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

多个SQL插入后标识列值中的依赖项

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

    如果下一个是正确的: 有多个插入的SQL字符串(使用存储过程):

    “执行spinsertdata…执行spinsertdata…执行spinsertdata…”

    每个新记录的标识列中的ID(自动递增)都小于下一个记录的ID。

    例如,执行给定的SQL字符串后,第一条记录的ID小于第二条记录的ID,并且其ID小于第三条记录的ID?

    2 回复  |  直到 16 年前
        1
  •  1
  •   AdaTheDev    16 年前

    是的,如果它是一个自动递增的标识列,那么它是正确的

        2
  •  0
  •   Raj More    16 年前

    从本质上讲,自动增量是按照增量的数量在每次插入时进行的。

    MS SQL Server提供了一种创建反向顺序的方法。看看这里

    create table #test
    (
        TestId INT IDENTITY (2, -1),
        DateTimeStamp   DateTime
    )
    GO
    INSERT INTO #test (DateTimeStamp) Values (GETDATE());
    INSERT INTO #test (DateTimeStamp) Values (GETDATE());
    INSERT INTO #test (DateTimeStamp) Values (GETDATE());
    INSERT INTO #test (DateTimeStamp) Values (GETDATE());
    INSERT INTO #test (DateTimeStamp) Values (GETDATE());
    INSERT INTO #test (DateTimeStamp) Values (GETDATE());
    INSERT INTO #test (DateTimeStamp) Values (GETDATE());
    INSERT INTO #test (DateTimeStamp) Values (GETDATE());
    GO
    SELECT * FROM #test
    

    结果:

    TestId      DateTimeStamp
    2           2009-07-28 15:02:09.200
    1           2009-07-28 15:02:09.200
    0           2009-07-28 15:02:09.200
    -1          2009-07-28 15:02:09.200
    -2          2009-07-28 15:02:09.203
    -3          2009-07-28 15:02:09.203
    -4          2009-07-28 15:02:09.203
    -5          2009-07-28 15:02:09.207