日期:2014-05-18  浏览次数:20536 次

想问一下SQL能实现这样的功能吗?应该怎么实现?
有两个表,

a     结构如下主表

    id           主键
    TName     Null


b     结构如下明细表

    Tid         Not   Null--存放a.id  
    MX           Null     --   明细


我想要实现这样的功能:
当向a表插入一条记录时,同时也向b表插入一条记录,
且b.Tid     =     a.id  
请部如何在向a表插入数据的同时得到id   值,同时会给b表的Tid

------解决方案--------------------
inner join
------解决方案--------------------
用存储过程呗
如果这个id是个自增字段
定义一个变量=@@identity
取到这个变量再往另一个表里插
------解决方案--------------------
用触发器也能实现
------解决方案--------------------
触发器实现较好,你用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();

}

}
------解决方案--------------------
恩sql和.net中的事务或者.sql的触发器
------解决方案--------------------
触发器

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