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