Пожалуйста, прости, если уже ответил.Я посмотрел на множество других вопросов, и ни один из них не помогает!По сути, я хочу скопировать одну строку из одной таблицы в другую.Проблема, с которой я столкнулся - это идентификатор строки, которую я хочу скопировать, уже используется в таблице, в которую я хочу скопировать.Это то, что у меня есть в настоящее время, работает, пока не решит эту проблему.
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) );
}
}
}