SQL-服务器赋值给主键增量值

SQL-server assigning a value to an primary key incremental value

我有两个主键:'ID' 和 'last modified'。

ID 是一个递增的标识,也就是说,当我添加新行时,它会像:

    ID |       last modified       |value1|value2|value3|...|value_n|
    -- |---------------------------|------|------|------|---|-------|
     1 | 2011-10-01 13:03:00.000   |................................|
     2 | 2011-10-01 14:03:00.000   |................................|

我从不同的表中添加这些新行,所以我想根据某些条件更新行,而且,我想添加引用相同 ID 的新行。我举个例子:

ID = 1,新行。 ID = 2,新行。

一些条件导致插入一个新行,它引用相同的 ID (ID = 2),同时更改最后修改的日期时间。

    ID |       last modified       |value1     |value2|value3|...|value_n|
    -- |---------------------------|------     |------|------|---|-------|
     1 | 2011-10-01 13:03:00.000   |................................     |
     2 | 2011-10-01 14:03:00.000   |old value..|.....................     |
     2 | 2011-10-01 15:03:00.000   |other value|.........................|

在某些条件导致更新一行之后(指的是特定的ID,在本例中,ID = 2),它将获取最后修改时间,并更新它,同时更新最后修改的日期时间:

    ID |       last modified       |value1   |value2|value3|...|value_n|
    -- |---------------------------|---------|------|------|---|-------|
     1 | 2011-10-01 13:03:00.000   |................................   |
     2 | 2011-10-01 14:03:00.000   |................................   |
     2 | 2011-10-01 16:03:00.000   |new value|.........................|

但是,当我添加新行时,即使我将相同的 ID 分配给 ID 列,它也会忽略分配并增加 ID,说明这一点:

    ID |       last modified       |value1   |value2|value3|...|value_n|
    -- |---------------------------|---------|------|------|---|-------|
     1 | 2011-10-01 13:03:00.000   |................................   |
     2 | 2011-10-01 14:03:00.000   |................................   |
     3 | 2011-10-01 16:03:00.000   |.........|.........................|

我附上代码:

 IF (SELECT COUNT(*) FROM myTable WHERE myColumn = @myValue ) = 0 
     --change value
   BEGIN
        INSERT INTO myTable(ID, value1,value2...) VALUES (@ID, value1,value2..)
   END

但是,正如我所说,分配 (ID = @ID) 实际上并不是分配,因为它是一个 PK,是一个自动增量值,而 PK。

我怎样才能把它弄好??有什么想法吗?

您需要为要插入值的 table 设置标识插入,然后插入记录。

SET IDENTITY_INSERT YourTableName ON