При выполнении вставки в таблицу со столбцом 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
или @@IDENTITY
, но, к сожалению, это не работает, так как это NULL во время выполнения транзакции.
Невозможно вставить значение NULL в столбец «SecondaryId», таблица «@TestTable»; столбец не допускает пустых значений. Вставить не удается.
Я знаю, что мог бы использовать вычисляемый столбец для этого примера, но мне любопытно, возможно ли то, что я пытаюсь сделать .