Chỉ để sao lưu câu trả lời của Brad được đưa ra trong các nhận xét, đây là MVCE thực hiện toàn bộ trình tự chèn trong một truy vấn động duy nhất. Theo nhận xét của Kris, hãy đảm bảo rằng tên cơ sở dữ liệu được liệt kê trắng, vì truy vấn dễ bị tấn công bởi SqlInjection (rất tiếc, tên cơ sở dữ liệu không thể được tham số hóa trong sql động thông qua sp_executesql
)
Đã cho:
CREATE TABLE TableName
(
ID INT IDENTITY(1,1)
);
Một lô duy nhất có thể được thực hiện:
DECLARE @strDBName VARCHAR(100) = 'MyDatabase';
Declare @Query Varchar(MAX)
SET @Query = 'SET IDENTITY_INSERT '+ @strDBName +'..TableName ON; '
SET @Query = @Query + 'INSERT INTO '+ @strDBName
+'..[TableName](ID) SELECT COALESCE(MAX(ID), 0)+1 FROM '+ @strDBName +'..TableName; '
SET @Query = @Query + 'SET IDENTITY_INSERT '+ @strDBName +'..TableName OFF;'
EXEC(@Query)