Как скопировать строку из одной таблицы MySQL в другую - PullRequest
0 голосов
/ 25 ноября 2018

Пожалуйста, прости, если уже ответил.Я посмотрел на множество других вопросов, и ни один из них не помогает!По сути, я хочу скопировать одну строку из одной таблицы в другую.Проблема, с которой я столкнулся - это идентификатор строки, которую я хочу скопировать, уже используется в таблице, в которую я хочу скопировать.Это то, что у меня есть в настоящее время, работает, пока не решит эту проблему.

 INSERT INTO venues SELECT * FROM submitted_venues WHERE id='9';

Генерирует ошибку: Дублирующая запись '9' для ключа 'id'

Есть лиспособ изменить номер идентификатора на лету, чтобы он создал неиспользуемый новый номер для получающей таблицы, или мне нужно написать запрос, который присваивает имена и получает все поля для каждой таблицы.Было бы хорошо, например, оператор замены 0, где 0 создает новую запись !!

Число 9 - это просто число, которое я использовал в этом примере, конечно, оно меняется.


РЕДАКТИРОВАТЬ:

Я создал решение этой проблемы.

//get highest id number of table to copy to
$sql = "SELECT id FROM venues ORDER BY id DESC LIMIT 1";
if( $result = mysqli_query( $mysqli, $sql ) ){
    $row = mysqli_fetch_array($result);
    $to_id = $row[ 0 ];
    //increase id 
    $to_id ++;

    //get highest id number of table to copy from
    $sql = "SELECT id FROM submitted_venues ORDER BY id DESC LIMIT 1";
    if( $result = mysqli_query( $mysqli, $sql ) ){
        $row = mysqli_fetch_array($result);
        $from_id = $row[ 0 ];
        //increase id 
        $from_id ++;

        //get highest unused id number
        $temp_id = $to_id > $from_id ? $to_id : $from_id;

        //update existing record to ensure that its id number will not conflict
        $sql = "UPDATE submitted_venues SET id = '$temp_id' WHERE id='$current_venue_id'";
        if( $result = mysqli_query( $mysqli, $sql ) ){
            $current_venue_id = $temp_id;

            //copy record to normal regular venues table
            $sql = "INSERT INTO venues SELECT * FROM submitted_venues WHERE id='$current_venue_id'";
            if( ! $result = mysqli_query( $mysqli, $sql ) )
                die("Could not copy -> " . mysqli_error($mysqli) );

            //delete record from temp db table
            $sql = "DELETE FROM submitted_venues WHERE id='$current_venue_id'";
            if( ! $result = mysqli_query( $mysqli, $sql ) )
                die("Could not delete -> " . mysqli_error($mysqli) );
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...