update with transactions