关于datawindow的更新问题

时间:2023-02-02 20:42:38
我见过一个高手写的程序,在更新时大部分用update where \insert \delete 语句,而很少用dw的update来判断保存
他用的是orcale 数据库,二者有什么区别吗??

现一问题,无论用那一种,我要检查dw的输入时的有效性,在修改时,有人说数据大时会影响性能(5-7万条),在保存时最好,但是如果我修改了一个dw中的n多条,如何判断,用for /next?? 然后取dw 的修改状态来值判断??
例: table_1   a,b,c,d    a  为主键,在表中不能出现b,c,d三者相同的记录如何判断

5 个解决方案

#1


引用楼主 qlzgdzfl 的帖子:
我见过一个高手写的程序,在更新时大部分用update where \insert \delete 语句,而很少用dw的update来判断保存 
他用的是orcale 数据库,二者有什么区别吗?? 

对于数据库来说,没什么区别。
对于开发人员来说,前面的方法,一切都要自己控制,该用insert的时候,不能用update,还要检查脏数据什么的,数据量大的话,还得一条条构造sql命令
后面的方法,就是在dw表格里面该数据,剩下的都交给pb去处理了,比较傻瓜化而已。
引用楼主 qlzgdzfl 的帖子:
现一问题,无论用那一种,我要检查dw的输入时的有效性,在修改时,有人说数据大时会影响性能(5-7万条),在保存时最好,但是如果我修改了一个dw中的n多条,如何判断,用for /next?? 然后取dw 的修改状态来值判断?? 

提交时确实应该控制数据量,否则你一个进程把某个表占住了,别人都不能用了,而且日志、回退数据都会占用得很厉害,直到你提交了,就会释放掉一些空间。而别的进程也可以访问这些修改过的内容。
但是也不要刻意去控制提交的量,因为这个不是很好控制。对于一般的应用,也不需要控制,因为一次修改的数据,不太可能会有几万条。一般的业务操作,也就操作一张单据,最多就是单据的明细记录比较多点(能够上千,就很了不起了)而已。

#2


一般要大量修改数据的,都是直接打开数据库操作,进行数据维护才有可能碰到的。 这时候,可以根据时间段、单据号的区间等方法,控制更新的量,尽量避免太大的事务出现

#3


解:
上面的几万条是表的数据,而不是修改的数据

#4


另:如果更新时,用dw_update()
我在itemchanged  中判断值,并提未
如查不通过会出现 两次itemchanged 中的错误提示是怎么回事

#5


可以在updatastart中做最后的检查,

#1


引用楼主 qlzgdzfl 的帖子:
我见过一个高手写的程序,在更新时大部分用update where \insert \delete 语句,而很少用dw的update来判断保存 
他用的是orcale 数据库,二者有什么区别吗?? 

对于数据库来说,没什么区别。
对于开发人员来说,前面的方法,一切都要自己控制,该用insert的时候,不能用update,还要检查脏数据什么的,数据量大的话,还得一条条构造sql命令
后面的方法,就是在dw表格里面该数据,剩下的都交给pb去处理了,比较傻瓜化而已。
引用楼主 qlzgdzfl 的帖子:
现一问题,无论用那一种,我要检查dw的输入时的有效性,在修改时,有人说数据大时会影响性能(5-7万条),在保存时最好,但是如果我修改了一个dw中的n多条,如何判断,用for /next?? 然后取dw 的修改状态来值判断?? 

提交时确实应该控制数据量,否则你一个进程把某个表占住了,别人都不能用了,而且日志、回退数据都会占用得很厉害,直到你提交了,就会释放掉一些空间。而别的进程也可以访问这些修改过的内容。
但是也不要刻意去控制提交的量,因为这个不是很好控制。对于一般的应用,也不需要控制,因为一次修改的数据,不太可能会有几万条。一般的业务操作,也就操作一张单据,最多就是单据的明细记录比较多点(能够上千,就很了不起了)而已。

#2


一般要大量修改数据的,都是直接打开数据库操作,进行数据维护才有可能碰到的。 这时候,可以根据时间段、单据号的区间等方法,控制更新的量,尽量避免太大的事务出现

#3


解:
上面的几万条是表的数据,而不是修改的数据

#4


另:如果更新时,用dw_update()
我在itemchanged  中判断值,并提未
如查不通过会出现 两次itemchanged 中的错误提示是怎么回事

#5


可以在updatastart中做最后的检查,