有两个表,a 结构如下主表 id 主键
TName Null
b 结构如下明细表 Tid Not Null--存放a.id
MX Null -- 明细
我想要实现这样的功能:
当向a表插入一条记录时,同时也向b表插入一条记录,
且b.Tid = a.id
请部如何在向a表插入数据的同时得到id 值,同时会给b表的Tid
TName Null
b 结构如下明细表 Tid Not Null--存放a.id
MX Null -- 明细
我想要实现这样的功能:
当向a表插入一条记录时,同时也向b表插入一条记录,
且b.Tid = a.id
请部如何在向a表插入数据的同时得到id 值,同时会给b表的Tid
如果这个id是个自增字段
定义一个变量=@@identity
取到这个变量再往另一个表里插
to yzqlee() 我不太想用存储过程,还有别的法子吗?
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();
}
}
FOR INSERT
AS
INSERT INTO b(Tid) SELECT id FROM [Inserted]
GO
sql取刚才的ID 这个 SQL语句怎么写呢?
用SELECT MAX([id]) FROM a似乎可以 但是不知道返回值咋处理 用datareader?好像太复杂了
不如用触发器 这样在代码里直接cmd.CommandText="INSERT INTO a(tname) VALUES(?)";执行即可 要不如果在别的程序里也要实现向表a里插入数据 同样还要写这么长的程序 很烦琐的事