PLS-00103: Намерен е символът край на файла

просто се опитвам да направя прост тригер в oracle SQL за регистриране на данни, когато ред в таблица е вмъкнат актуализиран или изтрит. но идвам с грешка.

ето моят код

create or replace trigger "APP_LOG_INSERT"
BEFORE
insert on "APPLICATIONS"
for each row
begin
INSERT INTO APP_LOG (APPLICATION_ID, SRN, APPLICATION_STATUS)
SELECT APPLICATION_ID, SRN, STATUS_ID
FROM INSERTED
end;

и грешката, която получавам, е

PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: (
begin case declare end exception exit for goto if loop mod null pragma raise return select
update while with <an identifier> <a double-quoted delimited-identifier> <a bind variable>
<< continue close current delete fetch lock insert open rollback savepoint set sql execute
 commit forall merge pipe purge`

всяка помощ ще бъде много оценена, аз съм съвсем нов в Oracle, така че може просто да съм пропуснал нещо просто


person Eli Ebel Childs    schedule 06.11.2015    source източник
comment
Oracle има нещо наречено INSERTED ???   -  person Gordon Linoff    schedule 06.11.2015
comment
трябва да е виртуална таблица, създадена от oracle? взех го от тук social.msdn.microsoft.com/forums/sqlserver/en-US/   -  person Eli Ebel Childs    schedule 06.11.2015
comment
Това е виртуална таблица, създадена от Microsoft SQL Server. Oracle използва различен метод за тригери.   -  person Gordon Linoff    schedule 06.11.2015
comment
а, да, това има смисъл. Благодаря   -  person Eli Ebel Childs    schedule 06.11.2015


Отговори (1)


Предполага се, че искате нещо подобно:

create or replace trigger "APP_LOG_INSERT"
BEFORE insert on "APPLICATIONS"
for each row
begin
    INSERT INTO APP_LOG(APPLICATION_ID, SRN, APPLICATION_STATUS)
        SELECT :new.APPLICATION_ID, :new.SRN, :new.STATUS_ID
        FROM dual;
end;
person Gordon Linoff    schedule 06.11.2015
comment
Или просто values( :new.application_id, :new.srn, :new.status_id). Няма причина да правите select from dual за един ред. - person Justin Cave; 06.11.2015
comment
@JustinCave. . . Знаете ли дали има разлика в производителността? (Въпреки това би било незначително.) Предпочитам insert . . . select, така че просто се чудя. - person Gordon Linoff; 06.11.2015
comment
@GordonLinoff - Не бих очаквал да има значима разлика. Може би толкова лек удар, ако използвате по-стара версия на Oracle, която всъщност трябваше да направи логическо четене на dual, вместо да го оптимизира. - person Justin Cave; 06.11.2015