一尘不染

SQL Server多行插入中的身份分配的订单保证

sql

使用表值构造器(http://msdn.microsoft.com/zh-
cn/library/dd776382(v=sql.100).aspx)插入多行时,是否保证填充的任何标识列的顺序都匹配TVC中的行?

例如

CREATE TABLE A (a int identity(1, 1), b int)

INSERT INTO A(b) VALUES (1), (2)

引擎保证的值是否按与b相同的顺序分配,即在这种情况下,它们匹配a = 1,b = 1和a = 2,b = 2。


阅读 186

收藏
2021-03-17

共1个答案

一尘不染

above带我在上面的评论,并知道insert / select + order
by的行为将保证生成身份顺序(#4:来自此博客

假设您希望基于类别ID生成身份,则可以按照以下方式使用表值构造函数来实现您的目标(不确定是否满足其他约束)。

insert into thetable(CategoryId, CategoryName)
select *
from
  (values
    (101, 'Bikes'),
    (103, 'Clothes'),
    (102, 'Accessories')
  ) AS Category(CategoryID, CategoryName)
order by CategoryId
2021-03-17