×

Loading...
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务

这是我写的请指教

CREATE OR REPLACE TRIGGER UBLOB AFTER UPDATE OF V_RESPONSE ON USER_PROFILES
FOR EACH ROW
BEGIN
UPDATE USER_PROFILES SET CREATE_DATE=SYSDATE WHERE USER_NAME=:new.USER_NAME and JURISDICTION= :new.JURISDICTION and V_NAME= :new.V_NAME;
END

V_RESPONSE是一个BLOB COLUMN.
SQL/PLUS提示:ORA-25006: cannot specify this column in UPDATE OF clause

我改为:
CREATE OR REPLACE TRIGGER UBLOB AFTER UPDATE ON USER_PROFILES
FOR EACH ROW
BEGIN
UPDATE USER_PROFILES SET CREATE_DATE=SYSDATE WHERE USER_NAME=:new.USER_NAME and JURISDICTION= :new.JURISDICTION and V_NAME= :new.V_NAME;
END
通过. 不过不起作用.

谢谢
Report

Replies, comments and Discussions:

  • 工作学习 / IT技术讨论 / 各位ORACLE高手帮忙,小弟要写一个简单的TRIGGER。谢谢!
    有一个TABLE有6个COLUMN 其中有一个是MODIFY DATE,三个是做PRIMARY KEY,两个是BLOB。我UPDATE两个BLOB时想用TRIGGER来UPDATE MODIFY DATE。怎么做?给个SYNTAX的框价就行。
    • 难道UPDATE BLOB与UPDATE一般类型有什么不同?
      • 他的意思是UPDATE BLOB后用trigger去UPDATE DATE。
        • 这个我知道。我是想问是一般的trigger和update blob触发的trigger有什么不同吗?还是他不知道普通的trigger怎么写?
          • 那你就写个一般的吧,我试试看。
          • 这是我写的请指教
            CREATE OR REPLACE TRIGGER UBLOB AFTER UPDATE OF V_RESPONSE ON USER_PROFILES
            FOR EACH ROW
            BEGIN
            UPDATE USER_PROFILES SET CREATE_DATE=SYSDATE WHERE USER_NAME=:new.USER_NAME and JURISDICTION= :new.JURISDICTION and V_NAME= :new.V_NAME;
            END

            V_RESPONSE是一个BLOB COLUMN.
            SQL/PLUS提示:ORA-25006: cannot specify this column in UPDATE OF clause

            我改为:
            CREATE OR REPLACE TRIGGER UBLOB AFTER UPDATE ON USER_PROFILES
            FOR EACH ROW
            BEGIN
            UPDATE USER_PROFILES SET CREATE_DATE=SYSDATE WHERE USER_NAME=:new.USER_NAME and JURISDICTION= :new.JURISDICTION and V_NAME= :new.V_NAME;
            END
            通过. 不过不起作用.

            谢谢
            • Don't use trigger in this situation.
              I think you should define a default valuse as SYSDATE for the column CREATE_DATE. When the column is update and no value is assigned to the column CREATE_DATE,then its value is SYSDATE.
              You can not use UPDATE OF clause when you create a trigger on LOB,BLOB columns.
              You can not read the :NEW value when you create a trigger on LOB,BLOB columns, that's why your trigger never executed.
            • 如果你坚持要用Trigger,可以这样写:
              CREATE OR REPLACE TRIGGER UBLOB
              BEFORE UPDATE ON USER_PROFILES
              --注意是BEFORE,不是AFTER
              FOR EACH ROW
              BEGIN
              :new.CREATE_DATE := SYSDATE;
              END
              • 你写的完全正确,不过早上我试过了,对BLOB的COLUMN无效!看来只能在程序里写了.不过有些奇怪为什么是BEFORE?
                • 建议你系统的看看ORACLE文档中关于TRIGGER这部分。特别是关于TRIGGER的处理机制。