MySQL: вставить, если существует внешний ключ - PullRequest
7 голосов
/ 25 июня 2010

У меня есть лист Excel с приблизительно 2000 строк, которые я хочу вставить в свою базу данных.

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

Я знаю, что могу игнорировать проверки внешнего ключа, но это не то, что я хочу. Я не хочу игнорировать проверки внешнего ключа, я просто хочу, чтобы некорректные запросы не выполнялись.

Пример:

INSERT INTO test (id, value) VALUES (10, 20);  
INSERT INTO test (id, value) VALUES (20, 20);

Первый запрос завершается неудачно, поскольку TEST.id ссылается на foobar.id, а foobar.id = 10. нет. Однако второй запрос будет работать, поскольку foobar.id = 20 существует, но второй запрос не будет выполнен, поскольку первый один уже провалился.

Есть ли способ, которым я не получаю сообщение об ошибке при первом запросе, и другие мои запросы все еще будут выполняться?

Я мог бы написать скрипт php, но я бы предпочел решение MySQL здесь.

1 Ответ

6 голосов
/ 25 июня 2010

Вы можете изменить, чтобы вставить результат выбора, так что-то вроде:

INSERT INTO test (id, value) 
SELECT foobar.id, 20
FROM foobar WHERE id = 10;
...