I got numerous suggestions... Exchanging <> with != doesn't change the error. Wrapping with a BEGIN ... END; doesn't change the error. Moving one of the statements above the IF...END IF; to below it makes the error go away. Go figure. I think it's a parsing bug. Case closed. :-) Thanks for your help. Bill Wagman Univ. of California at Davis IET Campus Data Center wjwagman@xxxxxxxxxxx (530) 754-6208 -----Original Message----- From: Jared Still [mailto:jkstill@xxxxxxxxx] Sent: Tuesday, November 27, 2007 4:17 PM To: William Wagman Cc: oracle-l@xxxxxxxxxxxxx Subject: Re: PL/SQL error? On 11/27/07, Jared Still <jkstill@xxxxxxxxx> wrote: > > The posted trigger is for all of update, delete, insert. > What happens if you remove INSERT and DELETE from the trigger? > Well, that wasn't it: 16:16:13 SQL>alter session set plsql_warnings = 'enable:all'; Session altered. 16:16:13 SQL> 16:16:13 SQL>create table my_table ( x integer); Table created. 16:16:13 SQL> 16:16:13 SQL>CREATE OR REPLACE 16:16:13 2 TRIGGER my_table_trg 16:16:13 3 AFTER INSERT OR DELETE OR UPDATE 16:16:13 4 ON my_table 16:16:13 5 FOR EACH ROW 16:16:13 6 DECLARE 16:16:13 7 v integer; 16:16:13 8 BEGIN 16:16:13 9 IF INSERTING THEN 16:16:13 10 v := 1; 16:16:13 11 ELSIF UPDATING THEN 16:16:13 12 IF :NEW.x <> :OLD.x 16:16:13 13 THEN 16:16:13 14 v := 1; 16:16:13 15 END IF; 16:16:13 16 ELSIF DELETING THEN 16:16:13 17 v := 1; 16:16:13 18 END IF; 16:16:13 19 END; 16:16:13 20 / Trigger created. 16:16:13 SQL> 16:16:13 SQL>show error No errors. 16:16:13 SQL> Perhaps you could provide a reproducible test case? -- //www.freelists.org/webpage/oracle-l