• 全部
  • API 调用
  • 基础类
  • 控件与界面
  • 数据库相关
  • DataWindow
  • 项目管理
  • Web 应用
  • 脚本语言

dw --其实这个东东有时候我还真的捉摸不透(续) ---期求大家的热心讨论

sharpenabc 2008-03-26 11:13:08
DW在并发控制方面的where clause for update/delete 的key columns ,key and updateable columns,key and modified columns 三项和key modification的use delete then insert,use update两项,排列组合也就是也就是6种组合方式(不知是否可以这样理解),但我在用的时候最多也就是用的key and updateable 和update 这一组合,至于为什么要用这种组合,什么情况下该用这种组合,及这种组合在dw的update执行后对后台产生的sql语句分别是什么?我还真不十分清楚,曾经用dw的sqlpreview函数查验,好像给自己的理解也是不太透彻。在此向大家征集对dw的这几种组合的理解,什么情况下该用那种组合,以及在update函数执行时产生的sql语句是什么......等待大家的热切讨论,谢谢啦!
...全文
82 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
rightyeah 2008-03-27
个人倾向于用key columns 和use update,理由是,如果我自己写sql去改数据,就是根据这样的规则来的。只要没有特殊的需求,那我肯定会这么用的
回复
sharpenabc 2008-03-27
既然组合有6项,我敢相信这六种组合分别有不同的所用情形,但是我又敢认定目前大家所用的无非就是key and updateable columns , updateable columns,和key and updateable columns ,use delete then insert这两个组合,其它的为什么不用,以及为什么不能用,其它的组合应该用于哪种情形,不知道大家有没有这方面的例子,了解的不太多,向大家学习啦,谢谢!
回复
sharpenabc 2008-03-27
1 楼和5楼,
key and update column
  产生sQL 条件就是主健和可修改列的原值  update .... where 主健 = xxx and column_name = '原值'....
key and modified columns
产生sQL 条件就是主健和已修改列的原值  
update table set column_name = '新值'... where 主健 = xxx and column_name = '原值'....
可修改列,已修改列的具体区分是什么,及在什么情况下是可修改列,什么情况下是已修改列?另外update ....where 主健 = xxx and column_name = '原值'.... 中的update应该也是table ,set column吧,那和已修改列的sql有什么区别呢?不好意思,这方面了解的不透彻,问的问题大家认为可能很简单...
大家有没有相关的资料或例子来说明在哪种情形下该哪种方式,本人自认为书上写的不是很详细,只是给人的理解也有模糊的意思,谢谢大家啦,偶对PB不是很精通,在此希望大家多多帮助!
回复
sharpenabc 2008-03-27
1 楼和5楼,
key and update column
  产生sQL 条件就是主健和可修改列的原值  update .... where 主健 = xxx and column_name = '原值'....
key and modified columns
产生sQL 条件就是主健和已修改列的原值  
update table set column_name = '新值'... where 主健 = xxx and column_name = '原值'....
可修改列,已修改列的具体区分是什么,及在什么情况下是可修改列,什么情况下是已修改列?另外update ....where 主健 = xxx and column_name = '原值'.... 中的update应该也是table ,set column吧,那和已修改列的sql有什么区别呢?不好意思,这方面了解的不透彻,问的问题大家认为可能很简单...
大家有没有相关的资料或例子来说明在哪种情形下该哪种方式,本人自认为书上写的不是很详细,只是给人的理解也有模糊的意思,谢谢大家啦,偶对PB不是很精通,在此希望大家多多帮助!
回复
SKY_4K_PPM 2008-03-26
看书,看书,看书
回复
AFIC 2008-03-26
阿,来晚了,如楼上所说……
回复
jlwei888 2008-03-26
其实书上说得很详细!
一般缺省就行,具体看书!

key column
  产生sQL 条件就是主健原值  update .... where 主健 = xxx
key and update column
  产生sQL 条件就是主健和可修改列的原值  update .... where 主健 = xxx and column_name = '原值'....
key and modified columns
产生sQL 条件就是主健和已修改列的原值  
update table set column_name = '新值'... where 主健 = xxx and column_name = '原值'....


key modification 就是主健修改后的处理方式
use delete then insert 先删除后插入
use update直接修改








回复
ybkenan 2008-03-26
書上寫得很詳細
回复
qiyousyc 2008-03-26
key column
  产生sQL 条件就是主健原值  update .... where 主健 = xxx
key and update column
  产生sQL 条件就是主健和可修改列的原值  update .... where 主健 = xxx and column_name = '原值'....
key and modified columns
产生sQL 条件就是主健和已修改列的原值  
update table set column_name = '新值'... where 主健 = xxx and column_name = '原值'....


key modification 就是主健修改后的处理方式
use delete then insert 先删除后插入
use update直接修改
-----------------------
use delete then insert 先删除后插入
这个要注意的,一般不用的,如果是sql server数据库,其中的自动种子会更改的。
回复
mengya100 2008-03-26
选中"Use Delete Then Insert"单选钮,在唯一键列被更新的情况下,PoweBuild将首先删除原来的行,然后使用新的键值插入新行。(这种方法减少了数据库重新组织数据的次数,但也存在一些潜在的问题,当某个表的主键是另一个表的外键并在定义外部键时将删除方式定义同时删除(级联删除)时,应用程序可能并不想使用"Use Delete Then Insert"选项。)
选中"Use Update"单选钮,在唯一键列被更新的情况下,PoweBuild修改行的键值(并非所有的数据库都支持主键更新,也就是说,如果您使用的数据库管理系统不支持主键更新,在这里您就不能选择"Use Update"选项)。这种方法避免了与外部键相关的级联删除问题。
回复
相关推荐
发帖
PowerBuilder
创建于2007-09-28

865

社区成员

PowerBuilder 相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-03-26 11:13
社区公告
暂无公告