从插入到/选择获取身份

时间:2015-09-18 22:52:01

标签: sql-server asp-classic output insert-into scope-identity

我正在使用SQL Server 2012中的脚本(作为经典ASP页面的后端)来从我的初始表(aaa_test_ap)中选择所有行,并将它们分布在我的其他3个表中({{1} },aaa_test_usersaaa_test_users_positions)。

我希望获得aaa_test_users_education的标识,一旦插入一行,就可以在同一个查询中用作其他两个表插入,作为它们的FK(aaa_test_users.ID) 。

是否可以在一个查询中使用User_ID方法获取身份?

我已尝试使用INSERT INTO,但它只返回最后一个值。

使用SCOPE_Identity()方法,我如何利用它生成的表值,以便第一个insert语句生成的值插入到接下来的两个语句中,每个语句都在正确的插入行中?

首先,表格:

OUTPUT

这是我一直在研究的问题:

CREATE TABLE [dbo].[aaa_test_sp]
(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [UserName] [nvarchar](50) NULL,
    [first_name] [nvarchar](50) NULL,
    [last_name] [nvarchar](50) NULL,
    [position] [nvarchar](50) NULL,
    [phone] [nvarchar](50) NULL,
    [education] [nvarchar](50) NULL,
    [ListID] [int] NULL,

    CONSTRAINT [PK_aaa_test_sp] 
       PRIMARY KEY CLUSTERED ([ID] ASC)
 ) ON [PRIMARY]
 GO

CREATE TABLE [dbo].[aaa_test_users]
(
    [UserID] [int] IDENTITY(1,1) NOT NULL,
    [UserName] [nvarchar](50) NULL,
    [first_name] [nvarchar](50) NULL,
    [last_name] [nvarchar](50) NULL,

    CONSTRAINT [PK_aaa_test_users] 
       PRIMARY KEY CLUSTERED ([UserID] ASC)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[aaa_test_users_positions]
(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [UserID] [int] NULL,
    [position] [nvarchar](50) NULL,
    [phone] [nvarchar](50) NULL,

    CONSTRAINT [PK_aaa_test_users_positions] 
        PRIMARY KEY CLUSTERED ([ID] ASC)
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[aaa_test_users_education] 
(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [UserID] [int] NULL,
    [education] [nvarchar](50) NULL,

    CONSTRAINT [PK_aaa_test_users_education] 
        PRIMARY KEY CLUSTERED ([ID] ASC)
) ON [PRIMARY]
GO

1 个答案:

答案 0 :(得分:0)

您加入新ID的表格。

作为第二个插入的示例:

INSERT INTO aaa_test_users_positions(UserID, position, phone)
    SELECT io.UserID, position, phone
    FROM aaa_test_sp cross join
         @InsertOutput1 io
    WHERE ListId = '1';

注意:根据您的结构,@InsertOutput1中可能只有一行,因此这不会产生比预期更多的行。