Have the updateLastRunTime function return the number of affected rows (e.g. from DAO::getAffectedRows for UPDATEs, 1 from successful inserts).
If it's false, the DB doesn't support it and we have to assume.
If it's 0, then no rows were affected and something else must have beat us to it.
If it's 1, then the update introduced a new "last run time" and we can go ahead and process.