"Graham Vickrage" <graham@digitalplanit.com> writes:
> However my understanding was that if the default value is SQL NULL then any
> values passed into the function that are null would be treated as 'NULL'.
Not sure what you think you meant by that, but a null is a null. If you
declared the table column as NOT NULL then Postgres is doing exactly
what it should. You may wish to code the insert along the lines of
INSERT INTO table VALUES (..., COALESCE($1, suitable-default), ...)
COALESCE is a handy notation for "value1 unless it's NULL, in which case
value2".
regards, tom lane