mss  sql server 2008在A表中新增一条记录后    获得这条记录的ID 自动插入到 B表 中的新一条记录里面如果失败就都不插入

解决方案 »

  1.   

    首先需要编写sql语句,返回插入后返回的当前Id,这个sqlhelper这个数据库操作类可以实现,然后在把这个ID插入到B表中,当前这两条语句需要放在一个事物里面
      

  2.   

    Id是自增的?
    insert 之后执行
    declare @id int
    select   @id=max(id) from table
    insert table b(id)
    values(@id)
     
      

  3.   

    逻辑的问题,要么 事物 要么用 IF控制也行
    事物的 话,两条SQL语句放到一个 事物中就行,逻辑的 话 大概如下:
    if(插入A 失败)
    {
     跳出
    }
    else
    {
        if(插入B失败)
          { 删除A}
    }
      

  4.   

    用sql事务处理。SqlConnection myConnection = new SqlConnection("Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;");
    myConnection.Open();SqlTransaction myTrans = myConnection.BeginTransaction(); //使用New新生成一个事务
    SqlCommand myCommand = new SqlCommand();
    myCommand.Transaction = myTrans;try
    {
    myCommand.CommandText = "insert into CRM_Staff(ids)values('1');select @@IDENTITY";
      object obj = myCommand.ExecuteScalar(); //获取自增ID
    if (obj == null)
    {
    myCommand.CommandText = "insert into CRM_Staff2(ids)values(obj.tostring() )";
     obj = myCommand.ExecuteScalar();
    myTrans.Commit(); //提交事务
    }
    }
    catch(Exception e)
    {
    myTrans.Rollback();
    Console.WriteLine(e.ToString());
    Console.WriteLine("Sorry, Record can not be updated.");
    }
    finally
    {
    myConnection.Close();
    }
      

  5.   

     object obj = myCommand.ExecuteScalar(); //获取自增ID
    if (obj != null)打错
      

  6.   

    香A插入新记录后,用@@IDENTITY获取刚刚插入的ID,然后再插入到B中。
    代码5楼已经给了,你改动下就可以了。
      

  7.   


        --大体可以这样
    create trigger tri_insert on A for insert 
    as
         if @@rowcount<>0
            insert into B(id) select id  from inserted
      

  8.   

    实现插入A表数据将A表ID自动插入到B表示例
    protected void btnOK_Click(object sender, EventArgs e)
    {        //定义一个SqlData的新实例对象
            SqlData da = new SqlData();
            //调用公共类的ExceRead方法,返回SqlDataReader类型的数据
    SqlDataReader read = da.ExceRead("select * from tbUser where UserName='" + this.txtName.Text + "'");
            //读取数据库中的数据
    read.Read();
            read.Close();
            //定义一个字符串,插入相关用户信息
            string P_str_Com = "insert into tbUser(UserName,PassWord,Email,QQ,Sex,RegTime,IP)"
            + " values('" + this.txtName.Text + "','" + this.txtPwd.Text + "','" + this.txtEmail.Text + "','" +this.txtQQ.Text+ "','" + this.ddlSex.SelectedValue + "','" + DateTime.Now.ToString() + "','" + Page.Request.UserHostAddress + "')";
                 //调用公共类中的ExceSQL方法,执行insert语句
                bool add = da.ExceSQL(P_str_Com);
                if (add)
                {
            string ID;//字符串ID
            SqlConnection mycon = new SqlConnection(ConfigurationManager.AppSettings["conStr"]);
            mycon.Open();
            DataSet mydataset = new DataSet();
            SqlDataAdapter mydataadapter = new SqlDataAdapter("select * from tbUser where UserName='" + Session["UserName"] + "'", mycon);
            mydataadapter.Fill(mydataset, "tbUser");
            DataRowView rowview = mydataset.Tables["tbUser"].DefaultView[0];
            ID = rowview["UserID"].ToString();//用ID值等于A表ID值
    //将A表ID插入B表
    string P_str_Com = "Insert into tb_Message(FriendName,QQ,Email,UserID)"
    +" values ('"+this.txtName.Text+"','"+this.txtQQ.Text+"','"+this.txtEmail.Text+"','"+ID+"')";   
       Response.Write("<script language=javascript>alert('恭喜您!注册成功!');location='../Index.aspx'</script>");
                }
                else
                {
                    Response.Write("<script language=javascript>alert('对不起!您注册失败!');location='javascript:history.go(-1)'</script>");
                }
            }
    }
      

  9.   

    use tempdb
    gocreate table a2
    (
    iid int identity(1,1),
    [name] nvarchar(100)
    )
    create table a11
    (
    iid int 
    )
    ---事物
    begin tran
    insert into a2([name]) values('renfengquan')
    insert into a11(iid) values(ident_current('a2'))
    commit tran
    --触发器 
    create trigger  Insert_A on a2 
    for insert
    as
    insert into A11 values(@@Identity)
      

  10.   

    表示5楼的程序运行有问题啊
     错误信息:ExecuteScalar: Connection 属性尚未初始化。