有两个表,a  结构如下主表  id     主键
  TName  Null
b  结构如下明细表  Tid    Not Null--存放a.id 
  MX     Null  -- 明细
我想要实现这样的功能:
当向a表插入一条记录时,同时也向b表插入一条记录,
且b.Tid  =  a.id 
请部如何在向a表插入数据的同时得到id 值,同时会给b表的Tid

解决方案 »

  1.   

    用存储过程呗
    如果这个id是个自增字段
    定义一个变量=@@identity
    取到这个变量再往另一个表里插
      

  2.   

    id     主键  是个递增字段  int类型   to isoftk()  能说的详细一些吗?  在.net 应该怎么实现呢?
    to yzqlee()   我不太想用存储过程,还有别的法子吗?
      

  3.   

    触发器实现较好,你用SQL语句也能实现了,使用事务使两个表的操作在一个事务内。
     using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction))
            {
                strSql.Append(SQL insert表a);
                conn.Open();
                SqlTransaction trans = conn.BeginTransaction();
                cmd.Transaction = trans;
                cmd.Connection = conn;
                cmd.CommandType = CommandType.Text;
                try
                {
                    cmd.CommandText = strSql.ToString();
                    cmd.ExecuteNonQuery();
                    cmd.CommandText = sql取刚才的ID;
                    cmd.ExecuteNonQuery();
                    cmd.CommandText = SQL insert表B;
                    cmd.ExecuteNonQuery();
                    trans.Commit();
                               }
                catch (Exception e)
                {
                    trans.Rollback();
           
                }
             
            }
      

  4.   

    恩sql和.net中的事务或者.sql的触发器
      

  5.   

    触发器CREATE TRIGGER T_insert_a ON a
    FOR INSERT
    AS
    INSERT INTO b(Tid) SELECT id FROM [Inserted]
    GO
      

  6.   

    cmd.CommandText = sql取刚才的ID;
    sql取刚才的ID    这个 SQL语句怎么写呢?
      

  7.   

    不好取
    用SELECT MAX([id]) FROM a似乎可以 但是不知道返回值咋处理 用datareader?好像太复杂了
    不如用触发器 这样在代码里直接cmd.CommandText="INSERT INTO a(tname) VALUES(?)";执行即可 要不如果在别的程序里也要实现向表a里插入数据 同样还要写这么长的程序 很烦琐的事