2016-07-06 2 views
0

У меня есть SQL-запрос для PHP/MySQL и следующая проблема:SQL Insert пропустить запись

INSERT INTO UserConnected(UID1, UID2) VALUES ('1','2'),('1','3'),('1','4'); 

Таким образом, проблема в том, что если есть один пользователь из UID2 не доступен в UserAccounts (внешний ключ из UserConnected в UserAccount) весь запрос сломается, и ничего не будет вставлено вообще.

Так что скажем, для некоторого пользователя reaseon User 4 уже был удален, и этот запрос выполняется, потому что идентификатор поступает из любого другого источника (скажем, facebook или google), он попытается вставить, но он не может, поскольку пользователь недоступен ,

Есть ли способ сказать, что если ключ терпит неудачу, не вставляйте и не переходите к следующему элементу, не делая несколько запросов/вызовов. Я бы предпочел сделать это в одном запросе.

спасибо! С наилучшими пожеланиями!

+1

попытка INSERT IGNORE – CSK

+0

Поскольку вы добавили это как 'SQL' в дополнение к' MySQL' я хотел бы отметить, что это синтаксис - это 'MySQL' специфический и не является стандартным' SQL', поэтому будьте осторожны, если вы хотите портировать свою базу данных в будущем. – apokryfos

+0

Благодарим вас за быстрый ответ. IGNORE Unfortuately не работает: # 1452 - Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа завершилось с ошибкой (Database.UserConnected, CONSTRAINT UID2_ibfk_2 ИНОСТРАННЫЙ КЛЮЧ (UID2) ССЫЛКИ UserAccount (UID) ВКЛ. УДАЛИТЬ КАСКАД НА ОБНОВЛЕНИИ CASCADE) Он работает, когда я вручную удалите значение вставки для недоступного пользователя, но запрос будет динамическим, и мне нужен способ вставить все доступные учетные записи пользователей и пропустить неизвестные. – SomehowLuke

ответ

2
INSERT IGNORE INTO UserConnected(UID1, UID2) VALUES ('1','2'),('1','3')('1','4'); 
+0

, пожалуйста, попробуйте это и дайте мне знать –

+0

Благодарим за быстрый ответ. IGNORE Unfortuately не работает: # 1452 - Невозможно добавить или обновить дочернюю строку: сбой ограничения внешнего ключа ('Database' .'UserConnected', CONSTRAINT' UID2_ibfk_2' FOREIGN KEY ('UID2') ССЫЛКИ' UserAccount' (' UID') ON DELETE CASCADE ON UPDATE CASCADE) Он работает, когда я удаляю InserValue для недоступного пользователя – SomehowLuke

+0

np, если он исправлен, это все. –

0
INSERT INTO UserConnected(UID1, UID2) VALUES ('1','2'),('1','3'),('1','4'); 

Ваш отсутствует запятая в последнем множестве значений

+0

Извините, скопируйте и упростите ошибку;) – SomehowLuke