我也有同样的需求,找到了这个答案..
这会在公司表 (comp) 中创建一条记录,它会抓取在公司表上创建的自动 ID 并将其放入员工表 (staff) 中,因此可以将 2 个表链接,将许多员工链接到一个公司。它适用于我的 SQL 2008 数据库,应该适用于 SQL 2005 及更高版本。
============================
CREATE PROCEDURE [dbo].[InsertNewCompanyAndStaffDetails]
@comp_name varchar(55) = 'Big Company',
@comp_regno nchar(8) = '12345678',
@comp_email nvarchar(50) = 'no1@home.com',
@recID INT OUTPUT
-- '@recID' 用于保存我们即将获取的公司自动生成的 ID 号
AS
Begin
SET NOCOUNT ON
DECLARE @tableVar TABLE (tempID INT)
-- 上面的行用于创建一个临时表来保存自动生成的 ID 号以供以后使用。它只有一个字段'tempID',其类型INT与'@recID'相同。
INSERT INTO comp(comp_name, comp_regno, comp_email)
OUTPUT inserted.comp_id INTO @tableVar
-- 上面的 'OUTPUT inserted.' 行用于从它正在创建的记录中的任何字段中获取数据。我们想要的这个数据是 ID 自动编号。因此,请确保它为您的表显示正确的字段名称,我的是 'comp_id'。然后将其放入我们之前创建的临时表中。
VALUES (@comp_name, @comp_regno, @comp_email)
SET @recID = (SELECT tempID FROM @tableVar)
-- 上面的行用于搜索我们之前创建的临时表,其中保存了我们需要的 ID。由于这个临时表中只有一条记录,并且只有一个字段,它只会选择您需要的 ID 号并将其放入'@recID'。 '@recID' 现在有了你想要的 ID 号,你可以按照你想要的方式使用它,就像我在下面使用它一样。
INSERT INTO staff(Staff_comp_id)
VALUES (@recID)
End
-- 就这样。我一直在寻找这样的东西,有了这个详细的分解,我希望这会有所帮助。