千
千层血
Unregistered / Unconfirmed
GUEST, unregistred user!
对数据库中的若干张表进行更新,为了达到对每张表都更新成功才commit 否则rollback
代码:
procedure TForm1.Button_applyClick(Sender: TObject);
begin
database1.StartTransaction ;
with table1 do//对ddg表添加数据
begin
Active :=False;
TableName :='ddg';
Active :=true;
Append ;
FieldByName('nam').AsString := inttostr(i);//全局变量 整形
FieldByName('dt').AsDateTime :=now;
FieldByName('dd').AsString :=inttostr(i);
FieldByName('num').AsInteger :=i;
try
Post ;
except
begin
Database1.Rollback ;
Application.Terminate ;
end;
end;
end;
with table2 do//对class表添加数据
begin
Active :=False;
TableName :='CLASS';
Active :=true;
Append ;
FieldByName('class_name').AsString := inttostr(i);
FieldByName('t_time').AsDateTime :=now;
FieldByName('class_id').AsString :=inttostr(i);
try
Post ;
except
begin
Database1.Rollback ;
Application.Terminate ;
end;
end;
end;
i:=i+1;
database1.Commit ;//只有当两长表都添加成功才commit
end;
使用:sql7数据库bde数据引擎
结果发现:表 ddg每次添加一条数据,而表 class每次 添加了两条数据(一条是准备加的,
一条是 前面ddg新家的数据),用sql monitor跟踪sql 语句,发现 向sql数据库只提交了
两条insert语句(ddg表一条 class表一条),
问题就是:class明明只post一条数据,为什么在表里加了两条数据?
代码:
procedure TForm1.Button_applyClick(Sender: TObject);
begin
database1.StartTransaction ;
with table1 do//对ddg表添加数据
begin
Active :=False;
TableName :='ddg';
Active :=true;
Append ;
FieldByName('nam').AsString := inttostr(i);//全局变量 整形
FieldByName('dt').AsDateTime :=now;
FieldByName('dd').AsString :=inttostr(i);
FieldByName('num').AsInteger :=i;
try
Post ;
except
begin
Database1.Rollback ;
Application.Terminate ;
end;
end;
end;
with table2 do//对class表添加数据
begin
Active :=False;
TableName :='CLASS';
Active :=true;
Append ;
FieldByName('class_name').AsString := inttostr(i);
FieldByName('t_time').AsDateTime :=now;
FieldByName('class_id').AsString :=inttostr(i);
try
Post ;
except
begin
Database1.Rollback ;
Application.Terminate ;
end;
end;
end;
i:=i+1;
database1.Commit ;//只有当两长表都添加成功才commit
end;
使用:sql7数据库bde数据引擎
结果发现:表 ddg每次添加一条数据,而表 class每次 添加了两条数据(一条是准备加的,
一条是 前面ddg新家的数据),用sql monitor跟踪sql 语句,发现 向sql数据库只提交了
两条insert语句(ddg表一条 class表一条),
问题就是:class明明只post一条数据,为什么在表里加了两条数据?