Dan,    
          Thanks for putting me on the spot - I should have done better than a simple "drive-by" post like that.    
          So here's what I think should work...    
          CREATE TABLE MySchema/MyTable (
           Id INTEGER  CONSTRAINT MyTableId UNIQUE,
           CustNo INTEGER,
           CustomerName VARCHAR(50))
         ;    
          CREATE OR REPLACE TRIGGER MySchema/MyTableUniqueId
         BEFORE INSERT ON MySchema/MyTable
         REFERENCING NEW AS Bef
         FOR EACH ROW
         MODE DB2ROW
       BEGIN ATOMIC
         SET Bef.Id = IFNULL((SELECT MAX(Id) + 1
                                   FROM MySchema/MyTable), 1);
       END;    
          --  Insert some data w/o Id    
          INSERT
         INTO MySchema/MyTable (CustNo, CustomerName)
         VALUES(123, 'ACME Co.')
         ;    
          --  Insert some data with Id (value of Id will be overridden by trigger event)    
          INSERT
         INTO MySchema/MyTable
         VALUES(22, 234, 'Smith & Co.')
         ;    
          This does not take of concurrent inserts.  I'm curious if the trigger option    
CONCURRENT ACCESS RESOLUTION WAIT FOR OUTCOME
          will be of value; although, I'm not really sure what it does.    
          Disclaimer:  I don't profess to be a DB2 for i guru.  But, I did stay at a Holiday Inn Express last night    
          I hope this helps.    
          Daron    
  canutri