C
cxcsy
Unregistered / Unconfirmed
GUEST, unregistred user!
三层模式中,中间层有如下控件:
adoconnection1
query1 (SQL内容select * from table1 where id=1)
query2 (SQL内容select * from table2 where id=2)
客户层中有如下控件:
decomconnection1
clientdataset1 (数据指向中间层的query1)
clientdataset2 (数据指向中间层的query2)
我对两个表同时进行修改,如何保持数据一致(即事务处理问题)
table1.edit;
table1['客户号']:=1;
table2.edit;
table2['客户号']:=1;
i:=clientdataset1.applyupdates(0);
j:=clientdataset2.applyupdates(0);
如果在一层模式下我知道可以如下处理:
adoconnection1.begintras;
table1.edit;
table1['客户号']:=1;
table2.edit;
table2['客户号']:=1;
i:=clientdataset1.applyupdates(0);
j:=clientdataset2.applyupdates(0);
if (i=0) and (j=0) then
adoconnection1.committrans
else
adoconnection1.rollbacktrans;
请问各位大侠,三层模式应该如何处理?
adoconnection1
query1 (SQL内容select * from table1 where id=1)
query2 (SQL内容select * from table2 where id=2)
客户层中有如下控件:
decomconnection1
clientdataset1 (数据指向中间层的query1)
clientdataset2 (数据指向中间层的query2)
我对两个表同时进行修改,如何保持数据一致(即事务处理问题)
table1.edit;
table1['客户号']:=1;
table2.edit;
table2['客户号']:=1;
i:=clientdataset1.applyupdates(0);
j:=clientdataset2.applyupdates(0);
如果在一层模式下我知道可以如下处理:
adoconnection1.begintras;
table1.edit;
table1['客户号']:=1;
table2.edit;
table2['客户号']:=1;
i:=clientdataset1.applyupdates(0);
j:=clientdataset2.applyupdates(0);
if (i=0) and (j=0) then
adoconnection1.committrans
else
adoconnection1.rollbacktrans;
请问各位大侠,三层模式应该如何处理?