2个客户端同事运行程序,一个业务流程用事务处理,update 3个表,insert3个表;另外一个客户端连接同一数据库服务器,前一个客户端开始业务、开始事务之后,该客户端查询这几个表之外的表信息,再open时受影响,事务里单步执行调试,执行部分语句或者整个事务commit之后才能open,为什么出现这种情况啊?事务外的表应该不会被锁的啊?
服务器端连接数据库用 Tdatabase,设置参数
DATABASE NAME=dbMy
USER NAME=MyUSER
ODBC DSN=MySQL
OPEN MODE=READ/WRITE
BATCH COUNT=200
LANGDRIVER=
MAX ROWS=-1
SCHEMA CACHE DIR=
SCHEMA CACHE SIZE=24
SCHEMA CACHE TIME=-1
SQLPASSTHRU MODE=SHARED AUTOCOMMIT
SQLQRYMODE=
ENABLE SCHEMA CACHE=FALSE
ENABLE BCD=FALSE
ROWSET SIZE=20
BLOBS TO CACHE=64
BLOB SIZE=32
PASSWORD=MyUSER98
用了session
服务器端连接数据库用 Tdatabase,设置参数
DATABASE NAME=dbMy
USER NAME=MyUSER
ODBC DSN=MySQL
OPEN MODE=READ/WRITE
BATCH COUNT=200
LANGDRIVER=
MAX ROWS=-1
SCHEMA CACHE DIR=
SCHEMA CACHE SIZE=24
SCHEMA CACHE TIME=-1
SQLPASSTHRU MODE=SHARED AUTOCOMMIT
SQLQRYMODE=
ENABLE SCHEMA CACHE=FALSE
ENABLE BCD=FALSE
ROWSET SIZE=20
BLOBS TO CACHE=64
BLOB SIZE=32
PASSWORD=MyUSER98
用了session
客户端我是用TDCOMConnection 设置ComputerName,ServerName,ServerGUID,设置TSocketConnection的Address,Port,ServerName,然后设socket的Connected为true;
服务器端,用到Tdatabase的参数如前面所述,
事务处理通过我的一个接口类里的方法来实现
IRDMserverW = interface(IAppServer)
TRDMserverW = class(TRemoteDataModule, IRDMserverW)
事务处理的时候,sql语句赋值给TQuery控件MyQry,设置MyQry.DatabaseName为database的;
客户端查询事务不相关的表的时候,设TClientDataSet的RemoteServer,ProviderName,查询语句是通过设置客户端的TClientDataSet的commandtext
我在一个客户端执行事务处理的过程中设置断点,而另一个客户端做别的查询操作,TClientDataSet在open的时候受到影响求大家帮我分析一下