在关系表中插入数据而不使用identity_insert

时间:2011-12-16 15:01:52

标签: sql-server identity-insert

我有一个场景,我必须使用脚本将一些主数据插入到表中,以便我们可以在部署时在生产服务器上使用此脚本。

我的桌子是

Category
 --Id (PK, Identity)
 --Name

CategoryType
  --Id (PK, Identity)
  --Name
  --CategoryID (FK) 

现在我在excel中有类别和类别类型的一些行数据。 我必须生成数据脚本(一堆insert语句)。

我做了什么

Start with  identity_insert ON 
insert statement for Category table
Insert statement for CategoryType table with respect of category PK
end  identity_insert Off

我只想知道有什么方法可以避免identity_insert ON / OFF事件。

1 个答案:

答案 0 :(得分:1)

可能是您正在寻找的:

DECLARE @inserted table ( id int ) --assuming ID is int

INSERT INTO Category ( Name )
OUTPUT INSERTED.Id INTO @inserted
VALUES( 'MyCategory Name' )

INSERT INTO CategoryType( Name, CategoryID )
SELECT id, 'MyCategoryTypeName'
FROM @inserted

希望有帮助 最诚挚的问候,
约尔丹