diff --git a/mod/quiz/locallib.php b/mod/quiz/locallib.php
index f2848c8849..5b8e027545 100644
--- a/mod/quiz/locallib.php
+++ b/mod/quiz/locallib.php
@@ -2103,14 +2103,16 @@ function quiz_add_quiz_question($questionid, $quiz, $page = 0, $maxmark = null)
         );
     }
 
+    $trans = $DB->start_delegated_transaction();
+
     $slots = $DB->get_records('quiz_slots', array('quizid' => $quiz->id),
             'slot', 'questionid, slot, page, id');
     if (array_key_exists($questionid, $slots)) {
         return false;
     }
 
-    $trans = $DB->start_delegated_transaction();
-
     $maxpage = 1;
     $numonlastpage = 0;
     foreach ($slots as $slot) {
