MySQL импорт / дубликаты ключей - PullRequest
2 голосов
/ 11 августа 2011

Я пишу базу данных, которая должна иметь возможность импортировать информацию из другой базы данных. В моей базе данных есть таблица для участников и другая таблица для разрешений, которые могут быть предоставлены участникам (члену может быть предоставлено более одного типа разрешений). Таблица членов содержит столбец для хранения первичного ключа для членов из другой БД с целью плавного импорта.

Моя проблема заключается в том, что когда я импортирую другой ключ БД и разрешение из другой базы данных, а затем превращаю «другие ключи» в мои ключи, я, скорее всего, дублирую записи в таблице разрешений, которые mySQL корректно не разрешит. Я хотел бы, чтобы он пошел дальше и изменил те, которые он может, и я знаю, что те, которые не были изменены, я могу удалить.

Может ли кто-нибудь мне помочь, или есть какое-то иное решение?

1 Ответ

0 голосов
/ 11 августа 2011

Просто добавьте IGNORE к вашему запросу и потеряйте not in. Повторяющиеся ошибки тогда рассматриваются как предупреждения, и ваш импорт будет продолжен только с уникальными данными. Вам не нужно возвращаться и удалять дубликаты вручную.

INSERT IGNORE INTO GRANTED (MEM_ID,PERM_CODE) 
SELECT MEMBERS.MEM_ID AS MEM_ID,PERM_CODE 
FROM MEMBERS 
JOIN TEMP
ON (MEMBERS.MEM_SK_ID=TEMP.MEM_ID)
...