Create or replace trigger realtime
before insert on msu_t
declare
ltime date;
msecond number(3,0);
BEGIN
ltime:=:new.time;
mseconde:=:new.msecond;
insert into realtime_n ("time",msecond) values (ltime,msecond);
end;
-----------------------------------------------------
上面的触发器编译不过关,是因为列名里面有"time"这个关键字。所以new.time认为不合法,这个时候该怎么办呢?
before insert on msu_t
declare
ltime date;
msecond number(3,0);
BEGIN
ltime:=:new.time;
mseconde:=:new.msecond;
insert into realtime_n ("time",msecond) values (ltime,msecond);
end;
-----------------------------------------------------
上面的触发器编译不过关,是因为列名里面有"time"这个关键字。所以new.time认为不合法,这个时候该怎么办呢?
before insert on msu_t
declare
ltime date;
msecond number(3,0);
BEGIN
ltime:=:new.time;
mseconde:=:new.msecond;
insert into realtime_n values (ltime,msecond);
end;
如果只有兩列,直接去掉好了。
試試After insert行不行...
一般来说尽量不要在表和字段中用关键字,有无穷后患。
建议改数据库字段名。
不用引号,或者new."time"
Create or replace trigger realtime
before insert on msu_t
declare
ltime date;
msecond number(3,0);
BEGIN
ltime:=:new."time"; --加了双引号
mseconde:=:new.msecond;
end;
------------
编译错误为:错误的赋值变量 'NEW.TIME'。另外,因为表是别人创建的,我不能随便修改别人的列名,难道真的没有其他办法了?
before insert on msu_t
declare
ltime date;
msecond number(3,0);
BEGIN
ltime:=:new."TIME"; --用大写加双引号就可以
--ltime:=:new."time"; 加了双引号
mseconde:=:new.msecond;
end;
你得for each row 哪里去了?
//
create table realtime_n (time date,msecond int)
//
create table msu_t(time date,msecond int)
//
create or replace trigger realtime
before insert on msu_t
for each row
declare
ltime date;
msecond int;
BEGIN
ltime:=:NEW.TIME;
msecond:=:NEW.msecond;
insert into realtime_n (time,msecond) values (ltime,msecond);
end;
我只是为了看得清楚才把“for each row ”去掉的,谢谢你的顶贴。结论,tomp() 、jiangchuanli(大山) 、hongqi162(失踪的月亮)的都可以。结帐