diff --git a/repository/quiz/impl.go b/repository/quiz/impl.go
index e4f8c122dd0ca2b1375a70fd9ef95936ecf011d4..fdefa4688f0ce895e0f115a42e1f795c38a57672 100644
--- a/repository/quiz/impl.go
+++ b/repository/quiz/impl.go
@@ -41,12 +41,18 @@ func (q *QuizRepositoryImpl) GetQuizDetail(quizId uuid.UUID) (*quiz.Quiz, error)
 }
 
 func (q *QuizRepositoryImpl) UpdateScore(email string, quizId uuid.UUID, score int) error {
-	return q.db.
-		Model(&quiz.QuizTake{}).
-		Where("quiz_id = ? AND email = ?", quizId, email).
-		Updates(quiz.QuizTake{
+	tx := q.db.Begin()
+	defer tx.Commit()
+
+	tx.Where("quiz_id = ? AND email = ?", quizId, email).Delete(&quiz.QuizTake{})
+
+	return tx.
+		Create(quiz.QuizTake{
 			Score:      score,
 			IsFinished: true,
+			QuizId:     quizId,
+			Email:      email,
+			Id:         uuid.New(),
 		}).Error
 }