0
create or replace TRIGGER book_s_t3
AFTER INSERT ON trans_s
FOR EACH ROW
begin
    UPDATE book_s
    SET no_of_books = :old.no_of_books + :new.no_of_books;
    WHERE no_of_books = :new.no_of_books;
end;

得到错误为:

Compilation failed, line 3 (10:27:39) The line numbers associated with compilation errors are relative to the first BEGIN statement. This only affects the compilation of database triggers.
PLS-00049: bad bind variable 'OLD.NO_OF_BOOKS'Compilation failed, line 3 (10:27:39) The line numbers associated with compilation errors are relative to the first BEGIN statement. This only affects the compilation of database triggers.
PLS-00049: bad bind variable 'NEW.NO_OF_BOOKS'Compilation failed, line 4 (10:27:39) The line numbers associated with compilation errors are relative to the first BEGIN statement. This only affects the compilation of database triggers.
PLS-00049: bad bind variable 'NEW.NO_OF_BOOKS'Compilation failed, line 4 (10:27:39) The line numbers associated with compilation errors are relative to the first BEGIN statement. This only affects the compilation of database triggers.
PLS-00103: Encountered the symbol "WHERE" 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 
4

1 回答 1

0

有一些语法错误会阻止您编译触发器。见下面的片段

CREATE OR REPLACE TRIGGER book_s_t3 AFTER
  INSERT ON trans_s FOR EACH ROW
  DECLARE
BEGIN
  UPDATE book_s
  SET no_of_books   = :old.no_of_books + :new.no_of_books
  WHERE no_of_books = :new.no_of_books;
END;
于 2016-01-19T11:33:46.193 回答