]> git.joonet.de Git - adminer.git/commitdiff
MSSQL alter index
authorJakub Vrana <jakub@vrana.cz>
Wed, 14 Jul 2010 14:18:12 +0000 (16:18 +0200)
committerJakub Vrana <jakub@vrana.cz>
Wed, 14 Jul 2010 14:18:12 +0000 (16:18 +0200)
adminer/drivers/mssql.inc.php

index 789185329b9ae33e544c28b68f53a7f191846e48..6967928279d001628ef0ab2542b80f568d5cff75 100644 (file)
@@ -446,6 +446,28 @@ WHERE OBJECT_NAME(indexes.object_id) = " . $connection2->quote($table)
                return true;
        }
        
+       function alter_indexes($table, $alter) {
+               $index = array();
+               $drop = array();
+               foreach ($alter as $val) {
+                       if ($val[2]) {
+                               if ($val[0] == "PRIMARY") { //! sometimes used also for UNIQUE
+                                       $drop[] = $val[1];
+                               } else {
+                                       $index[] = "$val[1] ON " . table($table);
+                               }
+                       } elseif (!queries(($val[0] != "PRIMARY"
+                               ? "CREATE" . ($val[0] != "INDEX" ? " UNIQUE" : "") . " INDEX " . idf_escape(uniqid($table . "_")) . " ON " . table($table)
+                               : "ALTER TABLE " . table($table) . " ADD PRIMARY KEY"
+                       ) . " $val[1]")) {
+                               return false;
+                       }
+               }
+               return (!$index || queries("DROP INDEX " . implode(", ", $index)))
+                       && (!$drop || queries("ALTER TABLE " . table($table) . " DROP " . implode(", ", $drop)))
+               ;
+       }
+       
        function begin() {
                return queries("BEGIN TRANSACTION");
        }