Foxtable(狐表)用户栏目专家坐堂 → 主从表事务 获取主表id


  共有3171人关注过本帖树形打印复制链接

主题:主从表事务 获取主表id

帅哥哟,离线,有人找我吗?
hgy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:63 积分:580 威望:0 精华:0 注册:2021/7/21 17:16:00
主从表事务 获取主表id  发帖心情 Post By:2021/8/25 10:23:00 [只看该作者]

要得到主表的id 存入从表
cmd.BeginTransaction()      
dim _id as integer 
for i=1 to 20    
cmd.CommandText = "insert into [tb_test] (p_id,c_date) values (?,?);select SCOPE_IDENTITY() as id"
            
            cmd.Parameters.Add("@p_id",_platid)
            cmd.Parameters.Add("@c_date",Date.Today)
            _id =   cmd.ExecuteScalar()
next 
cmd.commit()

数据库死锁,显示查询已超时,是否哪里出现问题

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109736 积分:558396 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/8/25 10:36:00 [只看该作者]

完整代码?

 回到顶部
帅哥哟,离线,有人找我吗?
hgy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:63 积分:580 威望:0 精华:0 注册:2021/7/21 17:16:00
  发帖心情 Post By:2021/8/25 10:40:00 [只看该作者]

Try
    cmd.BeginTransaction()
    Dim _id As Integer
    For i=1 To 20
        
        cmd.Parameters.Clear()
        cmd.CommandText = "insert into [tb_test] (p_id,c_date) values (?,?);select SCOPE_IDENTITY() as id"
        
        cmd.Parameters.Add("@p_id",_platid)
        cmd.Parameters.Add("@c_date",Date.Today)
        _id =   cmd.ExecuteScalar()
        
        cmd.Parameters.Clear()
        cmd.CommandText = "insert into [tb_test_detail] (p_id,test_id) values (?,?)"
        
        cmd.Parameters.Add("@p_id",_platid)
        cmd.Parameters.Add("@test_id",_id) ' 主表id
        cmd.ExecuteNonQuery()
    Next
    cmd.commit()
    
Catch ex As Exception
    cmd.Rollback()
    MessageBox.Show(ex.Message)
End Try

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109736 积分:558396 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/8/25 10:54:00 [只看该作者]

把事务放到循环里

Try

    Dim _id As Integer
    For i=1 To 20
         cmd.BeginTransaction()   
        cmd.Parameters.Clear()
        cmd.CommandText = "insert into [tb_test] (p_id,c_date) values (?,?);select SCOPE_IDENTITY() as id"
        
        cmd.Parameters.Add("@p_id",_platid)
        cmd.Parameters.Add("@c_date",Date.Today)
        _id =   cmd.ExecuteScalar()
        
        cmd.Parameters.Clear()
        cmd.CommandText = "insert into [tb_test_detail] (p_id,test_id) values (?,?)"
        
        cmd.Parameters.Add("@p_id",_platid)
        cmd.Parameters.Add("@test_id",_id) ' 主表id
        cmd.ExecuteNonQuery()
cmd.commit()
    Next
    
    
Catch ex As Exception
    cmd.Rollback()
    MessageBox.Show(ex.Message)
End Try

 回到顶部