在线等待:三层+ORACLE数据更新的问题!!!!(200分)

  • 主题发起人 主题发起人 水平线
  • 开始时间 开始时间

水平线

Unregistered / Unconfirmed
GUEST, unregistred user!
三层中+ORACLE
照李维的书说, update时自动产生数据发变化的字段的更新。
我现在恰巧要取出那个没有变化的字段的值, 用old.fieldsname,new.fieldsname,
如果fieldsname没有发生变化(比如修改的另外的几个字段),那么这个fieldsname,
不管是old也好,new也好都取不到(竟然是1,默认输入是1)!但是在对另外的一张表
进行更新时存入的却又不是1(还是原来的数据),真是怪事!

我想可能是这个样子,如果字段的数据没有变化,那么在ORACLE中,new.fieldsname
old.fieldsname取出的值可能是一个特殊的字符(不可见),表示这个字段没有更新,
不用UPDATE????

我不知道这里面到底是怎么一回事 真是急煞人!!![:(]
 
看不懂,你要做什么,达到什么目的 ?
 
太急了,没说清楚!
入库单细表更新的时候,用触发器+存储过程取出更新记录,保存到收发存表中!
现在是这个样子:修改入库单(可能入库的数量没有修改,但是修改了别的字段),
问题就出来了, 我在触发器中用 old.数量,new.数量取出数量时取不取这个值!

不知何解,我想可能是这个样子,在ORACLE中,new.fieldsname
old.fieldsname取出的值可能是一个特殊的字符(不可见),表示这个字段没有更新,
不用UPDATE?是不是这个样子???
 
对于一个表你可以建立很多UPDATE触发器,AFTER UPDATE OF <COLUM1,...>你明白了吗
你想更新哪个或那些列时触发,它就在更新这个或这些列时才触发
 
to:wangjiankang_71
  没听说过可以AFTER UPDATE OF <COLUM1,...>。。。。所以不明白!
  这是ORACLE!!!!
 
不知道你的程序是怎么写的

但是在ORACLE中若有一个字段没有更新则OLD和NEW的值是相同的
不管是AFTER UPDATE或者是 BEFORE UPDATE
 
同时如果你的ADOCONNECTION 设成是UPDATEBATCH的话
或者你的DATASET组件设成UPDATEBATCH模式的话
用POST可能会更新不到数据库里面.
 
我说的就是ORACLE,你是什么版本?从5。1B到9i 我都十分熟悉
告诉你,记住了
1)
CREATE OR REPLACE TRIGGER <你的该死的出发器名1> AFTER UPDATE OF (<col1,....,col99>)
ON <你的该死的表名> [FOR EACH ROW] WHEN [CONDITION] <PL/SQL BLOCK OR CALL_PROCEDURE_STATEMENT>
2)
CREATE OR REPLACE TRIGGER <你的该死的出发器名2> AFTER UPDATE OF (<col100,....,col250>)
ON <你的该死的表名> [FOR EACH ROW] WHEN [CONDITION] <PL/SQL BLOCK OR CALL_PROCEDURE_STATEMENT>
 
你需要学习了,给我加分,我给你MAIL些资料
 
我想我忽视了一个问题: 表A(触发)—>更新表B(存储过程),同时更新表C
表C有也触发器(它会再去表B)。。。。。(这个我忽略了[:)])

以后各位同胞请注意了!

to:wangjiankang_71,你有什么资料,不会是ORACLE的DOCUMENT吧?[:)]
MY MAIL:topload@newease.com!发过来吧![:)]
 
这就是你设计时的问题了,你的业务逻辑是怎样的?这种循环触发是一定不可以的。
不知道我哦说的你看买看明白
 
后退
顶部