我有一個簡單的表:如何知道更新語句更新哪些列?
CREATE TABLE "TEST1"
(
"COLUMN1" VARCHAR2(20 BYTE),
"COLUMN2" CLOB,
"COLUMN3" RAW(16),
"COLUMN4" BLOB
)
現在我還想寫它監視的更新,其中包含實際變化觸發。
我嘗試這樣做:
CREATE OR REPLACE TRIGGER "TEST1_TRIGGER1"
AFTER UPDATE ON "TEST1"
FOR EACH ROW
begin
dbms_output.put_line ('test1_trigger1');
if :old.column1 <> :new.column1 then
dbms_output.put_line ('column1 differs');
end if;
if :old.column2 <> :new.column2 then
dbms_output.put_line ('column2 differs');
end if;
if :old.column3 <> :new.column3 then
dbms_output.put_line ('column3 differs');
end if;
if :old.column4 <> :new.column4 then
dbms_output.put_line ('column4 differs');
end if;
NULL;
END;
這引發以下錯誤:
Error(16,19): PLS-00306: wrong number or types of arguments in call to '!='
的問題是,Oracle無法比較BLOB。
我該如何避免這個問題?我如何知道更新更新的列?
是'CASE'不如'IF'。 ;-) – ceving 2014-10-20 09:45:07