return affected rows on delete