oracle触发器查询中的问题

时间:2010-01-26 06:05:29

标签: sql oracle10g triggers

有人可以告诉我这个查询有什么问题吗?

create trigger Test_trigger 
   before insert on Test for each row 
   begin select TestSequence.nextval into :new.id from dual; 
end;/

当我运行此查询时,出现以下错误:

  

第1行的错误:PLS-00103:遇到以下任何一种情况时遇到符号“文件结束”:

     

;
  符号“;”取代“文件结束”继续。

我正在使用Oracle 10g Express Edition。

3 个答案:

答案 0 :(得分:0)

如果你在最后删除“/”,它应该有效。

答案 1 :(得分:0)

这是我正在尝试执行的脚本:

drop index TestTableIdx1;
drop index TestIdx1;
drop index TestIdx2;
drop table Test;
drop sequence TestSequence;
drop table TestTable; 

create table TestTable (
  objId      number        NOT NULL,
  type       varchar(16)   NOT NULL,
  title      varchar(192)          ,
  url        varchar(192)          ,
  primary key(objId, type)
);

create table Test (
  id         number        NOT NULL,
  objId      number        NOT NULL,
  type       varchar(16)   NOT NULL, 
  timeslot   timestamp     NOT NULL,
  contextId  number        ,
  pubId      number        NOT NULL,
  category   varchar(24),
  meta       varchar(32),
  pageviews  number        NOT NULL,
  aggrLevel  number        NOT NULL,
  primary key(id)
);

create table Dummy (
  id int NOT NULL,
  primary key(id)
);

create sequence TestSequence 
start with 1 
increment by 1 
nomaxvalue;

create trigger Test_trigger
before insert on Test
for each row
begin
select TestSequence.nextval into :new.id from dual;
end;
/

create index TestTableIdx1 on TestTable (
  objId desc, type asc
);

create index TestIdx1 on Test (
  timeslot desc, objId desc, type asc
);

create index TestIdx2 on Test (
  timeslot desc
);

create index TestIdx3 on Test (
  objId desc, type asc
);

create index TestIdx4 on Test (
  contextId desc
);

答案 2 :(得分:0)

尾随的“/”是SQL * Plus语法。您可能正在使用Oracle Apex中的SQL工具 - 在这种情况下,请省略“/".