the migration is going to run in a transaction, so there are two things i think i can confidently say:
  - `NULL` check is good practice, but shouldn't be necessary
  - calls to the `packages` table in the meantime will just wait for the transaction to finish, so downtime shouldn't be necessary.