Какую версию вы используете?
Следующие штраф на Oracle 11R2 работы:
drop table tq84_eventdate;
create table tq84_eventdate (
data varchar2(10),
eventdate timestamp(0)
);
create trigger tq84_eventdate_trg
before insert on tq84_eventdate
for each row
begin
SELECT * INTO :NEW.EVENTDATE FROM (SELECT SYSDATE FROM DUAL);
end tq84_eventdate_trg;
/
insert into tq84_eventdate (data) values ('test');
select * from tq84_eventdate;
Однако, если я делаю
insert into tq84_eventdate (data) values ('value too large!');
Я получаю ORA-12899 вы упомянули. Таким образом, ошибка, вероятно, не связана с выражением select, который вы опубликовали, а с данными, которые вы на самом деле пытаетесь вставить.
Кроме того, на соответствующую записку, вы можете назначить SYSDATE непосредственно в триггере, то есть без косвенности избранного заявления:
create trigger tq84_eventdate_trg
before insert on tq84_eventdate
for each row
begin
:new.eventdate := sysdate;
end tq84_eventdate_trg;
/
Можете ли вы разместить фактический DDL своего стола? Исправленная вами ошибка подразумевает, что EventDate объявляется как VARCHAR2, а не как TIMESTAMP. –
Или что проблема не в триггере, а в фактическом заявлении INSERT. –