三层+服务端+ApplyUpdates保存主从表顺序

wanjianjun 2010-03-22 05:29:34
在服务端中建立了嵌套主从表关系,客户端获取数据,保存数据都成功,主要是保存主从的顺序我想要调整一下。

在客户端新增主从数据后点保存,我跟踪了后台执行SQL,服务端保存的顺序是先主表,后从表。
如果是客户端修改主从数据后保存,服务端保存的顺序则是先从表,后主表。

我想要无论新增还是修改后保存,执行的保存顺序都是先从表,后主表。因为新增数据的时候在主表有触发器要对从表进行判断,如果从表后保存,触发器就失效了,没起到作用。

是不是需要设置服务端上的DatasetProvider的什么属性?
...全文
97 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanjianjun 2010-03-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jjwwang 的回复:]
如果有外键约束,从表应该是保存不了. 所以现在的情况是相互矛盾.
[/Quote]

一点都不矛盾,我没有设外键,主从表中必填的字段在客户端都填了。前面我就说了保存数据是没问题的。

现在讨论的是DatasetProvider.ApplyUpdates() 这个方法保存嵌套主从表的顺序
wanjianjun 2010-03-23
  • 打赏
  • 举报
回复
还是我自己解决了,我修改了VCL的源码,达到了我要的效果。结贴散分了。
wanjianjun 2010-03-23
  • 打赏
  • 举报
回复
有没有人高人晓得呀。还请明鉴。。。
CACACACACA 2010-03-22
  • 打赏
  • 举报
回复
如果有外键约束,从表应该是保存不了. 所以现在的情况是相互矛盾.
wanjianjun 2010-03-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gallardo 的回复:]
你的主从表没有外键约束吗?有的话怎么可能先保存从表再保存主表,如果没有的话就是数据结构不严谨。

建议更改判断方式。
[/Quote]


你都没有看懂我的意思,我服务端采用的是嵌套表模式,返回到客户端的数据就是一个DatasetProvider.Data;
这个Data里面就包括了主表和从表数据(客户端自行进行处理)。

如果客户端要进行新增或修改后保存的时候也是传一个DatasetProvider.Delta给服务端.
用 DatasetProvider.ApplyUpdates() 方法保存主从数据.
这样SQL都是DatasetProvider自动生成的。

但是新增数据的时候,我跟踪了sql代码,是先保存了主表后保存的从表。
我现在要的是先保存从表。
gallardo 2010-03-22
  • 打赏
  • 举报
回复
你的主从表没有外键约束吗?有的话怎么可能先保存从表再保存主表,如果没有的话就是数据结构不严谨。

建议更改判断方式。
wanjianjun 2010-03-22
  • 打赏
  • 举报
回复
我本来就是客户端提交一个Clientdate.Delta给服务端,(因为是嵌套表,这个Delta就包含了主表数据和从表数据)

服务端是通过DatasetProvider.ApplyUpdates()保存数据的。。


新增的数据保存时,保存主从表的顺序是先主后从,我想要的是先从后主。。。
haitao 2010-03-22
  • 打赏
  • 举报
回复
如果客户端自己提交sql给服务端执行
或客户端自己提交数据,由服务端生成sql来执行

应该可以。。。。。。不过机制变的太多了

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧