Upsert (turns out you don't need id if you've got another unique attribute)