Postgres: Setting default values for fields¶
Let’s say you want certain fields to have their values set automatically when not explicitly passed. You can do this in the following ways:
- Postgres defaults: configure default values, using fixed values or simple SQL functions,
for columns in the table definition. E.g. an auto-incrementing
id
, acreated_at
timestamp, etc. - Custom SQL functions: set up Postgres triggers which run custom SQL functions/stored procedures
to set the values of certain columns on inserts/updates on the table. This is useful to set values of fields which
depend on other fields passed in the input. e.g. set
submission_time
of an online quiz as 1 hour from thestart_time
. - Role based column presets: set up presets, using session variables or fixed values, that are
applied when a row is created/updated with a particular user role.
E.g. set a
user_id
field automatically from a session variable/authorization header. - Created_at / updated_at timestamps: set up
created_at
andupdated_at
timestamp values.