2016-11-11 30 views
2

問題が発生しました。私はOracle 11gリリース2で次のSQLを持つテーブルを作成しました。ORA-04088:トリガー実行中のエラー

create table loc_aud 
(
username varchar2(20), 
audittime date, 
IP VARCHAR2(30), 
locno number(4), 
old_city number(4), 
new_city number(4) 
); 

このテーブルはsysスキーマにあります。

update locations set city = 'Dhaka' where location_id = 2100; 

しかし、それは:私は

CREATE OR REPLACE TRIGGER location_audit  
AFTER UPDATE OF city  
ON hr.locations  
REFERENCING NEW AS NEW OLD AS OLD  
FOR EACH ROW 
BEGIN 
IF :old.city != :new.city THEN 
    INSERT INTO loc_aud 
    VALUES (user, sysdate, UTL_INADDR.get_host_address, 
    :new.location_id,:old.city,:new.city); 
    END IF; 
END; 

その後I hrスキーマに接続され、次のコマンドでcity列を更新しようとしたSYSスキーマで次のコマンドを使用して、値ベースの監査のためのトリガーを作成し次のエラーが表示される

update locations set city = 'Dubai' where location_id = 2100 
     * 
ERROR at line 1: 
ORA-01722: invalid number 
ORA-06512: at "SYS.LOCATION_AUDIT", line 3 
ORA-04088: error during execution of trigger 'SYS.LOCATION_AUDIT' 

私は間違っていますか?

+0

これを回答として追加し、それを受け入れます –

答えて

0

loc_audという名前のテーブルを作成したときに、間違ったデータ型がありました。列cityvarchar2で、私が保存しようとしたのはnumberのデータ型でした。私はテーブルを変更し、それは働いた。

関連する問題