PHP MySQL Назначение внешних ключей, дублированных в БД

У меня есть следующий код:

$fkQuery = "SELECT TABLE_CONSTRAINTS.TABLE_NAME, KEY_COLUMN_USAGE.COLUMN_NAME, KEY_COLUMN_USAGE.REFERENCED_TABLE_NAME, KEY_COLUMN_USAGE.REFERENCED_COLUMN_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS RIGHT OUTER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE ON INFORMATION_SCHEMA.TABLE_CONSTRAINTS.CONSTRAINT_NAME = INFORMATION_SCHEMA.KEY_COLUMN_USAGE.CONSTRAINT_NAME WHERE INFORMATION_SCHEMA.KEY_COLUMN_USAGE.CONSTRAINT_NAME <> 'PRIMARY' AND INFORMATION_SCHEMA.TABLE_CONSTRAINTS.CONSTRAINT_TYPE = 'FOREIGN KEY' AND INFORMATION_SCHEMA.TABLE_CONSTRAINTS.TABLE_SCHEMA = '".$dbName."';";

$fkQueryResult = $newLink->query($fkQuery);

$a = 0;

while($fkey = $fkQueryResult->fetch(PDO::FETCH_ASSOC))
{
$testF[] = $fkey;
$assocF = $testF[$a];

$newTableName = $assocF['TABLE_NAME'];
$newColumnName = $assocF['COLUMN_NAME'];
$newRefTableName = $assocF['REFERENCED_TABLE_NAME'];
$newRefColumnName = $assocF['REFERENCED_COLUMN_NAME'];

$addFkToTable = "ALTER TABLE " . $newDbName . "." . $newTableName . " ADD FOREIGN KEY (" . $newColumnName . ") REFERENCES " . $dbName . "." . $newRefTableName . "(" . $newRefColumnName . ");";

echo $addFkToTable . "\n";

$newLink->query($addFkToTable);

$a++;
}

Это выберет все ссылки на внешние ключи из старой таблицы в старой базе данных, чтобы они могли быть переданы в новую таблицу базы данных. Это работает, за исключением того, что удваивает каждое отношение внешнего ключа. Так, например, у меня есть TableA (columnA), которая ссылается на TableB (columnB). Когда я запускаю fkQuery для базы данных, он возвращает, что fk существует, но перечисляет его дважды. Любые предложения относительно того, как это исправить?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]