Asp.net 一个SqlDataSource上有多个INSERT语句

Asp.net 一个SqlDataSource上有多个INSERT语句,asp.net,sql,sql-server,webforms,Asp.net,Sql,Sql Server,Webforms,对于“新记录”站点,我在SqlDataSource上附加了一个FormView。用户输入数据,InsertCommand具有SQL INSERT语句。问题是,我想在初始化过程中进行其他查询,这些查询涉及其他表 基本上,我希望在用户单击“插入”按钮时执行所有这些查询。 第一个INSERT从输入表单获取值,但其他三个值始终相同 INSERT INTO proceso (nombreProceso, macroProceso, analista_id) VALUES (@nombreProceso,@

对于“新记录”站点,我在
SqlDataSource
上附加了一个
FormView
。用户输入数据,
InsertCommand
具有SQL INSERT语句。问题是,我想在初始化过程中进行其他查询,这些查询涉及其他表

基本上,我希望在用户单击“插入”按钮时执行所有这些查询。 第一个INSERT从输入表单获取值,但其他三个值始终相同

INSERT INTO proceso (nombreProceso, macroProceso, analista_id)
VALUES (@nombreProceso,@macroProceso,@analista_id)
INSERT INTO marcador_progreso (marcador_id,state,proceso_id) VALUES (1,'False',@id)
INSERT INTO marcador_progreso (marcador_id,state,proceso_id) VALUES (2,'False',@id) 
INSERT INTO marcador_progreso (marcador_id,state,proceso_id) VALUES (3,'False',@id) 
当我运行此命令时,第一条语句显然被执行(即插入一条新的
proceso
记录),但其他3条插入没有执行。我应该如何着手解决这个问题

SqlDataDource包含id参数

 <InsertParameters>
     ... a few parameters...
     <asp:Parameter Name="id" />
</InsertParameters>

... 一些参数。。。

如果我错了,请纠正我,但在我看来,您似乎希望
@id
对象是刚刚插入
proceso
的行的id。至少从相应的
marcador\u progreso
列的名称(
proceso\u id
)可以看出这一点。如果我的猜测是正确的,那么您不需要名为
id
的参数。查询中的
@id
应该是一个局部变量,由第一个
INSERT
插入的行的id初始化

如果
proceso
的ID是一个整数
IDENTITY
列,则按如下方式更改脚本:

INSERT INTO proceso (nombreProceso, macroProceso, analista_id)
VALUES (@nombreProceso,@macroProceso,@analista_id);

DECLARE @id int;
SET @id = SCOPE_IDENTITY();

INSERT INTO marcador_progreso (marcador_id,state,proceso_id) VALUES (1,'False',@id);
INSERT INTO marcador_progreso (marcador_id,state,proceso_id) VALUES (2,'False',@id);
INSERT INTO marcador_progreso (marcador_id,state,proceso_id) VALUES (3,'False',@id);
插入proceso(nombreProceso、macroProceso、analista_id)
数值(@nombreProceso、@macroProceso、@analista_id);
声明@id int;
设置@id=SCOPE_IDENTITY();
在marcador_progreso(marcador_id,state,proceso_id)中插入值(1,'False',@id);
在marcador_progreso(marcador_id,state,proceso_id)中插入值(2,'False',@id);
在marcador_progreso(marcador_id,state,proceso_id)中插入值(3,'False',@id);
并删除
id
参数


函数返回插入到当前执行范围内任何表的
标识
列中的最后一个值。

@id由第一次插入返回?它是字段中的一个参数。刚刚编辑了我的问题以显示它。您会遇到什么错误?告诉我们更多。或者说一切看起来都很好,没有插入值?没有错误。显然它是执行的,正如我所说的,第一个INSERT确实正确执行,但我不确定其他3条语句发生了什么。将多个插入放在一个InsertCommand字段中是否合法?正如我从这里读到的,似乎可以执行多个插入。。但是检查你的插入语句是否正确