вы можете попробовать использовать предложение OUTPUT в качестве обходного пути:
INSERT INTO YourTable
(col1, col2, col3)
OUTPUT INSERTED.YourIdentityCol as insert_id
VALUES (val1, val2, val3)
этот единственный оператор вставит строку и вернет результирующий набор значений идентификаторов.
рабочий образец:
create table YourTestTable (RowID int identity(1,1), RowValue varchar(10))
go
INSERT INTO YourTestTable
(RowValue)
OUTPUT INSERTED.RowID as insert_id
VALUES
('abcd')
ВЫХОД:
insert_id
-----------
1
(1 row(s) affected)
это также хорошо, если вы вставляете несколько строк одновременно:
INSERT INTO YourTestTable
(RowValue)
OUTPUT INSERTED.RowID as insert_id
SELECT 'abcd'
UNION SELECT '1234'
UNION SELECT 'xyz'
ВЫВОД:
insert_id
-----------
2
3
4
(3 row(s) affected)