代码之家  ›  专栏  ›  技术社区  ›  Rod

sql help在一个过程中插入两个

  •  0
  • Rod  · 技术社区  · 14 年前

    大家好,

    我正在尝试创建一个存储过程,将两个插入到两个不同的表中。

    DECLARE @New_Group1_Id
    DECLARE @New_Group2_Id
    
    INSERT INTO Group1
                          (Group1_Desc)
    VALUES     (N'Indianapolis')
    
    SELECT @New_Group1_Id = Scope_Identity()
    
    
    INSERT INTO Group2
                          (Group2_Desc)
    VALUES     (N'Indianapolis')
    
    SELECT @New_Group2_Id = Scope_Identity()
    

    结果显示ID为1和2,而不是1和1(如果这是表中插入的第一条记录)

    谢谢,

    1 回复  |  直到 14 年前
        1
  •  3
  •   SQLMenace    14 年前

    您可能删除了其中一个表中的行,改为截断该表(这将重置标识),然后重试或重新设置表的种子 DBCC CHECKIDENT (Group1, RESEED, 0);

    在这里运行这个来验证它是否按预期工作

    Create table Group1(id int identity,Group1_Desc nvarchar(100)) 
    create table Group2(id int identity,Group2_Desc nvarchar(100)) 
    
    DECLARE @New_Group1_Id int
    DECLARE @New_Group2_Id int
    
    INSERT INTO Group1(Group1_Desc)
    VALUES     (N'Indianapolis')
    
    SELECT @New_Group1_Id = Scope_Identity()
    
    
    INSERT INTO Group2 (Group2_Desc)
    VALUES     (N'Indianapolis')
    
    SELECT @New_Group2_Id = Scope_Identity()
    
    select @New_Group1_Id,@New_Group2_Id
    

    现在做这个

    delete Group1
    

    现在再跑一次

    DECLARE @New_Group1_Id int
    DECLARE @New_Group2_Id int
    
    INSERT INTO Group1(Group1_Desc)
    VALUES     (N'Indianapolis')
    
    SELECT @New_Group1_Id = Scope_Identity()
    
    
    INSERT INTO Group2 (Group2_Desc)
    VALUES     (N'Indianapolis')
    
    SELECT @New_Group2_Id = Scope_Identity()
    
    select @New_Group1_Id,@New_Group2_Id
    

    你会发现两者都是2

    现在截断表group1

    truncate table Group1
    

    声明@New\u Group1\u Id int
    声明@New\u Group2\u Id int
    
    
    选择@New\u Group1\u Id=Scope\u Identity()
    
    
    插入组2(组2描述)
    值(N'Indianapolis')