Below you will find pages that utilize the taxonomy term “FOR UPDATE”
Posts
read more
Transaction for Update
Introduction
(This is for Mysql. Postgresql has different mechanism like RETURNING)
func (s *Service) UnenrollMembership(
ctx context.Context,
accountID string,
) error {
s.membershipRepo.UnenrollMembership(
ctx,
accountID,
)
if err != nil {
return err
}
s.produceUnenrollmentEvent(ctx, accountID)
}
func (s *ChannelMembershipRepo) UnenrollChannelMembership(ctx context.Context, accountID string) error {
params := db.UpdateMembershipEndTimeParams{
AccountID: accountID,
EndAt: sql.NullTime{
Time: time.Now(),
Valid: true,
},
}
err := s.queries.UpdateMembershipEndTime(ctx, params)
if err != nil {
return err
}
return nil
}
/* name: UpdateEnrollmentChannelMembershipEndTime :exec */
-- UpdateEnrollmentChannelMembershipEndTime for any row of a given account_id with NULL end_time, updates the end_time
-- to the given time
UPDATE membership SET end_at = sqlc.arg(end_at) WHERE account_id = ? AND (end_at IS NULL OR end_at > sqlc.arg(end_at));
SQL code generated from sqlc query: