D
doggo
Unregistered / Unconfirmed
GUEST, unregistred user!
问题的环境为三层结构,中间层为
ActiveX Library + Transactional Object(Requires a transaction),
通过DCOM连接,访问数据库的接口为ADO 2.5,后台数据库为sql server 7.0。
此问题仅在ADO采用原生驱动程序(Microsoft OLE DB Provider for SQL Server)
时有问题,换用Microsoft OLE DB Provider for ODBC Drivers后一切正常。
数据库中有A、B、C三个表,A和B、A和C为主从表的关系,A表中有一个trigger,
当往A表中每插入一条记录时通过trigger会从B、C两个表中选出与A表中key=0相对应的
记录,并把和A表连接键值该为新记录的key后插入B、C表本身。假如A表中插入的记录的
key值为newkey,sql语句如下:
insert into B
select newkey,OtherColumn from B
where B.A_FK = 0
insert into C
select newkey,OtherColumn from C
where C.A_FK = 0
在客户端插入新数据并通过ApplyUpdates(0)更新时报错,出错信息为“键列信息不足,
操作影响到多行”。在进行操作时只有一个用户在进行操作,经过多次尝试后发现只要在
trigger中的第一个insert语句插入的记录只有一条时就一切正常,只要第一个insert语句
插入多条记录就报错。迫不得已ADO的驱动程序采用
Microsoft OLE DB Provider for ODBC Drivers后一切正常。
又经过试验发现在两层的C/S结构中也存在同样的问题,不知道是什么原因,
应该如何解决?
ActiveX Library + Transactional Object(Requires a transaction),
通过DCOM连接,访问数据库的接口为ADO 2.5,后台数据库为sql server 7.0。
此问题仅在ADO采用原生驱动程序(Microsoft OLE DB Provider for SQL Server)
时有问题,换用Microsoft OLE DB Provider for ODBC Drivers后一切正常。
数据库中有A、B、C三个表,A和B、A和C为主从表的关系,A表中有一个trigger,
当往A表中每插入一条记录时通过trigger会从B、C两个表中选出与A表中key=0相对应的
记录,并把和A表连接键值该为新记录的key后插入B、C表本身。假如A表中插入的记录的
key值为newkey,sql语句如下:
insert into B
select newkey,OtherColumn from B
where B.A_FK = 0
insert into C
select newkey,OtherColumn from C
where C.A_FK = 0
在客户端插入新数据并通过ApplyUpdates(0)更新时报错,出错信息为“键列信息不足,
操作影响到多行”。在进行操作时只有一个用户在进行操作,经过多次尝试后发现只要在
trigger中的第一个insert语句插入的记录只有一条时就一切正常,只要第一个insert语句
插入多条记录就报错。迫不得已ADO的驱动程序采用
Microsoft OLE DB Provider for ODBC Drivers后一切正常。
又经过试验发现在两层的C/S结构中也存在同样的问题,不知道是什么原因,
应该如何解决?