I am trying to create a function to automatically create a reference value when a record is inserted into a table. I want the reference value to consist of the user that is doing the insert, plus a couple of dates, plus a sequence number, where the sequence number will increment every time a given user inserts a record. because this sequence number is user specific, my first thought is not to use a set of sequences for it, but to do this by selecting the maximum sequence number that user has entered in the past. So, I have a function that gets all the data, and concatenates it into a string with the exception of the sequence. For that component, I have the following test select that works. SELECT NULLIF(regexp_replace(report_no, '\D','','g'), '')::numeric AS result FROM expense_report_instance WHERE /* NEW.project_key */ 123 = project_key; But, when I add the requisite MAX clause, I get a syntax error. SELECT MAX(NULLIF(regexp_replace(report_no, '\D','','g'), '')::numeric FROM expense_report_instance WHERE /* NEW.project_key */ 123 = project_key); Is there a way I can make this work? -- "They that would give up essential liberty for temporary safety deserve neither liberty nor safety." -- Benjamin Franklin