2016-11-11 2 views
2

У меня возникла следующая проблема. Я создал таблицу со следующим sql в версии Oracle 11g 2: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. Затем я создал триггер для значения базового аудита, используя следующую команду в SYS схеме

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; 

После этого я связан с ч схемой и попытался обновить city колонки с помощью следующей команды:

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

Но это давая мне следующие ошибки

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, имела неправильный тип данных. Колонка city была varchar2, и я попытался сохранить ее в виде number. Я изменил таблицу, и она сработала.