在对具有IDENTITY
列的表执行插入时,是否可以IDENTITY
在同一事务中将该值用作另一列的值?
例如:
DECLARE @TestTable TABLE
(
PrimaryId INT NOT NULL IDENTITY(1, 1),
SecondaryId INT NOT NULL
);
INSERT INTO @TestTable (SecondaryId)
SELECT
SCOPE_IDENTITY() + 1; -- set SecondaryId = PrimaryId + 1
SELECT * FROM @TestTable;
预期的:
| PrimaryId | SecondaryId |
+-----------+-------------+
| 1 | 2 |
我以为我可以使用SCOPE_IDENTITY
or@@IDENTITY
系统函数来实现这一点,但不幸的是,这不起作用,因为在执行事务时它为 NULL。
无法将值 NULL 插入列“SecondaryId”、表“@TestTable”;列不允许空值。插入失败。
我知道我可以在这个例子中使用计算列,但我很好奇我正在尝试做的事情是否可能。