在SQL插入中,在第二列中写入新行的已分配ID

时间:2019-02-08 22:13:01

标签: sql sql-server

假设我有下表

| id | name   | anchorId |
|----|--------|----------|
| 1  | Robert | 1        |
| 2  | William| 2        |
| 3  | Bob    | 1        |

基本上,假设添加了新行

| id | name   | anchorId |
|----|--------|----------|
| 1  | Robert | 1        |
| 2  | William| 2        |
| 3  | Bob    | 1        |
| 4  | Billy  | 4        |

直到我可以将Billy的anchorId设置为2为止,我希望它指向自身。 即,在插入时,如果未指定,如何将anchorId设置为新分配的ID?

1 个答案:

答案 0 :(得分:1)

某些选择(最优先的IMO)

  1. anchorId设置为NULL以进行新插入,而不是设置为行ID。这是通常的表示方式。
  2. 使用序列而不是IDENTITY-然后您可以将idanchorId的默认值都设置为来自序列,并且都将被赋予相同的值。
  3. 如果使用IDENTITY,则需要进行INSERT,然后对新插入的值立即执行UPDATE(使用从{{ 1}}或IDENTITY子句或触发器中的SCOPE_IDENTITY()表)。

代码2

OUTPUT