Te mando una preliminar que puedes adaptar a tu proyecto. Se trata de leer la tabla origen, guardar los datos, insertar el elemento nuevo, borrar la tabla y reinsertar los elementos ordenador.
<<<<<<<<<<<<<<<<<<< TRABAJA SOBRE UNA TABLA DE PRUEBAS ANTES DE PONERLO EN PRODUCCION <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
Modifica a gusto, espero que te sirva:  
 Código PHP:
    <?php
 
/**
 * CREAR LA TABLA DE PRUEBAS
 * CREATE TABLE `temp` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `descripcion` VARCHAR(8) DEFAULT NULL,
  `dependencia` CHAR(1) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;
 
 
INSERT  INTO `temp`(`id`,`descripcion`,`dependencia`) VALUES (1,'A','0'),(2,'B','1'),(3,'C','1'),(4,'D','1'),(5,'E','2'),(6,'F','1'),(7,'G','2'),(8,'H','1'),(9,'I','2');
 */
 
error_reporting(E_ALL);
ini_set("display_errors", 1);
mysql_connect("localhost","USER","PASS");
mysql_select_db("bd217754");
 
/**
 * Inserta un elemento en la posición $xElement y reordena la tabla
 *
 * @param int $xElement
 * @return array
 * @author barcoavenus.blog.com
 */
 
function reOrder($xElement, $xData){
 
 
    $xResponse = array();
 
    /**
     * Selecciono todos los elementos de la tabla ordenador por el campo orden
     */
    $sql = "SELECT * FROM temp ORDER BY id;";
    if(!$query = mysql_query($sql)) $xResponse = array("Error en la select: ".mysql_error());
 
    /**
     * Agrego el elemento nuevo en la posición correcta
     */
    foreach ($xData as $key => $value)
    $xResponse[$xElement][$key] = $value;
 
 
 
    while($fetch = mysql_fetch_assoc($query)){
 
        if($fetch['id'] == $xElement) //Si estamos en el orden que nos interesa
        {
            //Insertamos en el elemento actual en la siguiente posición, es decir, desplazado hacia abajo
            foreach ($fetch as $key => $value)
            $xResponse[$fetch['id']+1][$key] = ($key=='id'?$fetch['id']+1:$value);
        }
        else { //de lo contrario lo dejamos como estaba
            foreach ($fetch as $key => $value)
            $xResponse[$fetch['id']][$key] = ($key=='id'?$fetch['id']:$value);
        }
 
    }
    /**
     * Ahora $xResponse contiene todos los elementos de la tabla y además en la posición $xElement el elemento indicado
     */
 
    mysql_free_result($query);
    asort($xResponse);
 
    /**
     * Borramos la tabla y la regeneramos, utilizo transacciones para evitar perdida de datos
     */
    mysql_query("BEGIN;");
    if(!mysql_query("TRUNCATE TABLE temp;")) {echo "Imposible limpiar tabla!: ".mysql_error(); mysql_query("ROLLBACK;"); return false;};
    $xInsert = "";
    //Generar la sentencia insert
    foreach ($xResponse as $xInfo){
        $xSql = "INSERT INTO temp (";
        foreach ($xInfo as $key => $value)
        $xSql .= "".$key.",";
 
        $xSql = substr($xSql, 0, -1); //Quito la coma final
        $xSql.= ") VALUES (";
 
        foreach ($xInfo as $key => $value)
        $xSql .= "'".$value."',";
 
        $xSql = substr($xSql, 0, -1); //Quito la coma final
        $xSql.= ");";
 
        $xInsert .= $xSql;
 
        if(!$insert = mysql_query($xSql)) {echo mysql_errno().": Imposible insertar filas!: ".mysql_error(); mysql_query("ROLLBACK;"); return false;};
    }
 
    if(!mysql_query("COMMIT;")) {echo mysql_errno().": Imposible hacer commit!: ".mysql_error(); mysql_query("ROLLBACK;"); return false;};
    return true;
}
 
/**
 * tabla antes:
 *     id  descripcion  dependencia
------  -----------  -----------
     1  A            0          
     2  B            1          
     3  C            1          
     4  D            1          
     5  E            2          
     6  F            1          
     7  G            2          
     8  H            1          
     9  I            2    
 */
 
$xData = array(
'id' => '7',
'descripcion' => 'X',
'dependencia' => '2');
 
if(!reOrder(7, $xData)) die("<h1>No he podido reordenar la tabla!</h1>");
die("<h1>Tabla reordenada!</h1>");
 
/**
 * Tabla después
 *     id  descripcion  dependencia
------  -----------  -----------
     1  A            0          
     2  B            1          
     3  C            1          
     4  D            1          
     5  E            2          
     6  F            1          
     7  X            2          
     8  H            1          
     9  I            2  
     
 */
 
 
 
?>