Z
zbsfg
Unregistered / Unconfirmed
GUEST, unregistred user!
如果我在一个事务中一次插入2条以上记录时,第一条就不能插入,我在MSSQL的事件探查器
中发现第一条记录也有,就是没有插入数据库中,但如果只插一条记录却是可以的,怪怪!
如果不使用事务,多条记录却是可以全部插入的。这难道是事务的错??
代码如下,数据库是MS SQLSERVER
adospmain.Prepared:=true;
adoconnection.BeginTrans; //如果取消第一条及以下的COMMIT及ROLL却行了
for i:=0 to lbcategory.Items.Count-1 do //假如运行3次,第一次的记录在这里应该没问题
begin
adospmain.Parameters.ParamByName('@s_id').value:=i;
adospmain.Parameters.ParamByName('@category').value:=label1.Caption; //即类别名称如人员类别等
adospmain.Parameters.ParamByName('@content').value:=lbcategory.Items;
adospmain.ExecProc;
end;
adoconnection.CommitTrans; //<-----
存储过程是:
/*插入类别库记录
输入:各个字段值
输出:无
*/
CREATE PROCEDURE insertCategory @s_id smallint,@category char(10),@content char(10)
AS
insert gz_category (s_id,category,content) values(@s_id,@category,@content)
GO
很简单的,应该是没问题
大家帮忙
中发现第一条记录也有,就是没有插入数据库中,但如果只插一条记录却是可以的,怪怪!
如果不使用事务,多条记录却是可以全部插入的。这难道是事务的错??
代码如下,数据库是MS SQLSERVER
adospmain.Prepared:=true;
adoconnection.BeginTrans; //如果取消第一条及以下的COMMIT及ROLL却行了
for i:=0 to lbcategory.Items.Count-1 do //假如运行3次,第一次的记录在这里应该没问题
begin
adospmain.Parameters.ParamByName('@s_id').value:=i;
adospmain.Parameters.ParamByName('@category').value:=label1.Caption; //即类别名称如人员类别等
adospmain.Parameters.ParamByName('@content').value:=lbcategory.Items;
adospmain.ExecProc;
end;
adoconnection.CommitTrans; //<-----
存储过程是:
/*插入类别库记录
输入:各个字段值
输出:无
*/
CREATE PROCEDURE insertCategory @s_id smallint,@category char(10),@content char(10)
AS
insert gz_category (s_id,category,content) values(@s_id,@category,@content)
GO
很简单的,应该是没问题
大家帮忙