Currently it doesn't seem there is any why of inserting or updating with a default value like: insert into users (id, firstname, lastname) values (default, 'Arthur', 'Dent'); or update users set id = default where ... I can see DBD::Pg implements this with a special variable: $DBD::Pg::DBDPG_DEFAULT and handles replacing ? $\d with DEFAULT.