subDimension

Toggling field values in PostgreSQL

It's important to me that each time I do something new, I move forward with knowledge of the technologies I'm using.

This weekend I created Ticks, a super simple TODO list. I needed a way to toggle a task between complete and incomplete. This status is stored simply as a timestamp field. If the field is NULL then the task is incomplete, otherwise, it was completed on the date stored.

UPDATE ticks
SET completed = 
    CASE
        WHEN completed IS NULL THEN CURRENT_TIMESTAMP
        ELSE NULL
    END
WHERE task_id=%s;

Nice and simple, with just 1 query.