是我的错吗?(100分)

  • 主题发起人 主题发起人 3p
  • 开始时间 开始时间
3

3p

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用ADO+SQL7.0,编写修改程序,前台更新一个表时,后台触发另一个表的插入被修改
的这个表的纪录,只要备更新的纪录的某个字段被改,假设更改T1,只要其字段c1被改,则
把该纪录插入到表T2,后台编写触发器如下:
create trigger xxxx on T1
as
insert T2 (c1) select a.c1 from inserted a,deleted b where a.c1<>b.c1
delphi中更新T1,如修改了c1,程序正常,如果没有修改c1,锦修改其他,则总是出现
“recoed changed by another user”,观察T1依然能更新,可总是出现这样的错,
如果触发器的Insert语句后还有其他的语句,则没有执行,也就是:失败!无论采用
Updatehwereall或updatekey,情况依然。该触发器在SQL中测试完全没问题。
尝试修改触发器测试:发觉where中含有"="就没事,如:
create trigger xxxx on T1
as
insert T2 (c1) select a.c1 from inserted a,deleted b where a.c1=b.c1

insert T2 (c1) select a.c1 from inserted a,deleted b where a.c1>=b.c1
不会出现错误
改成:
insert T2 (c1) select a.c1 from inserted a,deleted b where
not (a.c1=b.c1) 也不行。
高手们,please help me!我是在NT服务器单机中测试的
 
我想:错误信息应该是server端发出的,会否是我的ADO设置有问题。
ADOconnection的设置中attributes的commitrataining,abortretain何用?
我的datasetprovider连接adosql->adoconnection
客户端用dcom+clientdataset,更新时使用clientdataset.applyuodates,应该如何设置
才不发生错误?
 
我的服务端设置如下:
ADOconnection+datasetprovider+adoquery
adoconnection.options=[] ???如何影响?
adoconnection.cursorlocation:=cluseserver
adoconnection.mode=cmReadWrite
datasetproviser.updatemode=upwherekeyonly
adoquery.cursorlocation:=cluseserver
adoquery.cursortype=ctkeyset;
adoquery.commandtype=cmdtext
locktype=itbatchoptimistic

客户端:
clientdataset + DCom
update时,调用clientdataset.applyupdates
 
3p:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
 
3p:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
请认真阅读大富翁论坛规则说明 http://www.delphibbs.com/delphibbs/rules.htm
 
结束帖子!
结束帖子!
结束帖子!
 
后退
顶部