]> git.mjollnir.org Git - moodle.git/commitdiff
Add a unique index to the question_numerical_units table, to prevent duplicate units...
authortjhunt <tjhunt>
Wed, 28 Feb 2007 17:19:04 +0000 (17:19 +0000)
committertjhunt <tjhunt>
Wed, 28 Feb 2007 17:19:04 +0000 (17:19 +0000)
mod/quiz/db/install.xml
mod/quiz/db/upgrade.php
mod/quiz/version.php

index 818e203806b256211a133a36ae85ab9027e002e0..f3e37aa0d8f249f3223e647166ec09db5f9259d8 100755 (executable)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<XMLDB PATH="mod/quiz/db" VERSION="20060920" COMMENT="XMLDB file for Moodle mod/quiz"
+<XMLDB PATH="mod/quiz/db" VERSION="20070228" COMMENT="XMLDB file for Moodle mod/quiz"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd"
 >
         <KEY NAME="primary" TYPE="primary" FIELDS="id" COMMENT="Primary key for question_numerical_units" NEXT="question"/>
         <KEY NAME="question" TYPE="foreign" FIELDS="question" REFTABLE="question" REFFIELDS="id" PREVIOUS="primary"/>
       </KEYS>
+      <INDEXES>
+        <INDEX NAME="question-unit" UNIQUE="true" FIELDS="question, unit" COMMENT="Unique index to ensure that only one unit with a particular name is created for each question."/>
+      </INDEXES>
     </TABLE>
     <TABLE NAME="question_attempts" COMMENT="Student attempts. This table gets extended by the modules" PREVIOUS="question_numerical_units" NEXT="question_states">
       <FIELDS>
index db8abd527b7b296b5e790c292b6250399d45ece8..d9b54353fbaef116a047007cfe23b431d6a8287d 100644 (file)
@@ -32,6 +32,22 @@ function xmldb_quiz_upgrade($oldversion=0) {
 ///     $result = result of "/lib/ddllib.php" function calls
 /// }
 
+    if ($result && $oldversion < 2007022800) {
+    /// Ensure that there are not existing duplicate entries in the database.
+        delete_records_select('question_numerical_units', "id > (SELECT MIN(iqnu.id)
+                FROM {$CFG->prefix}question_numerical_units iqnu
+                WHERE iqnu.question = {$CFG->prefix}question_numerical_units.question AND
+                        iqnu.unit = {$CFG->prefix}question_numerical_units.unit)");
+
+    /// Define index question-unit (unique) to be added to question_numerical_units
+        $table = new XMLDBTable('question_numerical_units');
+        $index = new XMLDBIndex('question-unit');
+        $index->setAttributes(XMLDB_INDEX_UNIQUE, array('question', 'unit'));
+
+    /// Launch add index question-unit
+        $result = $result && add_index($table, $index);
+    }
+
     return $result;
 }
 
index 05b940f7b134e8a1e126437850a5c8393a548be7..30f67250df03b429f58622cd918649ece204b61f 100644 (file)
@@ -5,7 +5,7 @@
 //  This fragment is called by moodle_needs_upgrading() and /admin/index.php
 ////////////////////////////////////////////////////////////////////////////////
 
-$module->version  = 2007020200;   // The (date) version of this module
+$module->version  = 2007022800;   // The (date) version of this module
 $module->requires = 2007020200;   // Requires this Moodle version
 $module->cron     = 0;            // How often should cron check this module (seconds)?