The INSERT in your trigger fires again your trigger.
Here is an easy walk around.
Code:
------------------------------ Commands Entered ------------------------------
CREATE TABLE ADMIN.TEST
(ID INTEGER NOT NULL
,ZAPST INTEGER NOT NULL
,ONOFF CHARACTER(1) NOT NULL
,PRIMARY KEY(id, zapst)
);
------------------------------------------------------------------------------
DB20000I The SQL command completed successfully.
------------------------------ Commands Entered ------------------------------
CREATE TRIGGER ADMIN.TEST_I
AFTER INSERT ON ADMIN.TEST
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN ATOMIC
IF new.zapst <> 1000 THEN
INSERT INTO ADMIN.TEST VALUES (NEW.ID, 1000, NEW.ONOFF);
END IF;
END
@
------------------------------------------------------------------------------
DB20000I The SQL command completed successfully.
------------------------------ Commands Entered ------------------------------
INSERT INTO ADMIN.TEST VALUES (1, 1, '1')@
------------------------------------------------------------------------------
DB20000I The SQL command completed successfully.
------------------------------ Commands Entered ------------------------------
SELECT * FROM ADMIN.TEST@
------------------------------------------------------------------------------
ID ZAPST ONOFF
----------- ----------- -----
1 1 1
1 1000 1
2 record(s) selected.
------------------------------ Commands Entered ------------------------------
DROP TRIGGER ADMIN.TEST_I@
------------------------------------------------------------------------------
DB20000I The SQL command completed successfully.
------------------------------ Commands Entered ------------------------------
CREATE TRIGGER ADMIN.TEST_I
AFTER INSERT ON ADMIN.TEST
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN ATOMIC
/*
IF new.zapst <> 1000 THEN
*/
INSERT INTO ADMIN.TEST VALUES (NEW.ID, 1000, NEW.ONOFF);
/*
END IF;
*/
END
@
------------------------------------------------------------------------------
DB20000I The SQL command completed successfully.
------------------------------ Commands Entered ------------------------------
INSERT INTO ADMIN.TEST VALUES (2, 2, '2')@
------------------------------------------------------------------------------
INSERT INTO ADMIN.TEST VALUES (2, 2, '2')
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0723N An error occurred in a triggered SQL statement in trigger
"ADMIN.TEST_I". Information returned for the error includes SQLCODE "-803",
SQLSTATE "23505" and message tokens "1|ADMIN.TEST". SQLSTATE=09000