You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在单脚本中利用TableA自增主键批量插入多表关联记录

单脚本实现1:1关联表的批量插入操作

核心思路

利用SQL Server的OUTPUT子句捕获TableA插入后自动生成的主键IdA,将其暂存到表变量中,再基于这些主键批量插入关联的TableB表,确保两张表的记录严格保持1:1对应关系。

完整脚本示例

-- 开启事务保证操作原子性(可选但推荐)
BEGIN TRANSACTION

BEGIN TRY
    -- 声明表变量,存储TableA插入后的主键及关联字段
    DECLARE @InsertedTableAIds TABLE (IdA INT, Name NVARCHAR(MAX))

    -- 向TableA插入多行数据,同时将生成的主键输出到表变量
    INSERT INTO TableA (name)
    OUTPUT inserted.IdA, inserted.name INTO @InsertedTableAIds
    VALUES
    ('用户1'),
    ('用户2'),
    ('用户3')

    -- 基于表变量中的IdA,向TableB插入对应记录
    INSERT INTO TableB (IdA, CreatedDate, ExpriyDate)
    SELECT 
        IdA,
        GETDATE(),               -- 自动填充当前时间为创建日期
        DATEADD(MONTH, 1, GETDATE())  -- 自动填充1个月后的时间为过期日期
    FROM @InsertedTableAIds

    COMMIT TRANSACTION
END TRY
BEGIN CATCH
    -- 若出现错误则回滚事务,避免数据不一致
    ROLLBACK TRANSACTION
    THROW
END CATCH

关键说明

  • OUTPUT子句:是实现关联插入的核心,能直接获取插入操作生成的自动主键,避免后续查询主键可能出现的并发问题。
  • 事务处理:添加事务确保TableA和TableB的插入操作要么全部成功,要么全部回滚,保障数据一致性。
  • TableB的IdB:如果该字段是自动递增主键(IDENTITY),脚本中无需显式赋值,数据库会自动生成。

内容的提问来源于stack exchange,提问作者K.Z

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:35:10