iSeries: Create a trigger

CREATE OR REPLACE TRIGGER RowHistoryTrigger 
AFTER UPDATE OF TableWithRows ON MySchema
REFERENCING OLD AS old_row NEW AS new_row
FOR EACH ROW /*MODE DB2ROW | DB2SQL ? */
WHEN (old_row.Status <> new_row.Status
BEGIN
	DECLARE @GUID CHAR(36) NOT NULL DEFAULT '';
	SET @GUID=LOWER( 
		RIGHT(LPAD(HEX(INT(RAND(MICROSECOND(CURRENT_TIMESTAMP)) * 1000000000)), 8, '0'), 8) || '-' ||
		RIGHT(LPAD(HEX(INT(RAND() * 1000000000)), 8, '0'), 4) || '-' ||
		RIGHT(LPAD(HEX(INT(RAND() * 1000000000)), 8, '0'), 4) || '-' ||
		RIGHT(LPAD(HEX(INT(RAND() * 1000000000)), 8, '0'), 4) || '-' ||
		RIGHT(LPAD(HEX(INT(RAND() * 1000000000)), 8, '0'), 8) || RIGHT(LPAD(HEX(INT(RAND() * 1000000000)), 8, '0'), 4)
		);

	IF(NOT new_row.Status IS NULL) THEN
		INSERT INTO TableRowHistory (OID, INSERTEDAT, USERNAME, RECORDID, FROMSTATUS, TOSTATUS, MESSAGE) VALUES (@GUID, CURRENT_TIMESTAMP, USER, new_row.Oid, old_row.Status, new_row.Status, 'CHANGED');
	END IF
END

DROP SEQUENCE MY_SYNCVERSION

CREATE SEQUENCE MY_SYNCVERSION
    AS BIGINT
    START WITH 1
    INCREMENT BY 1
    NO CYCLE
    CACHE 100;
	
CREATE OR REPLACE TRIGGER MY_UPDATE_TRIGGER
BEFORE UPDATE ON MY_TABLE
REFERENCING NEW AS NEW_ROW
           OLD AS OLD_ROW
FOR EACH ROW
MODE DB2ROW
BEGIN ATOMIC

    SET NEW_ROW.SYNCVERSION =
        NEXT VALUE FOR MY_SYNCVERSION;

    SET NEW_ROW.LASTMODIFIED =
        CURRENT_TIMESTAMP;

END;
1390cookie-checkiSeries: Create a trigger