2016-07-06 17 views
0

私はSQL PHP/MySQLのクエリと、以下のような問題があります。SQL挿入スキップエントリ

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

が問題である、という(UserAccountsでUID2の1人のユーザーは利用できませんUserConnectedからの外部キーに存在する場合UserAccount)、クエリ全体が破損し、何も挿入されません。

ユーザー4はすでに削除されていますが、このクエリは他のソースから来ているため(つまり、facebookやgoogleなど)、ユーザーが利用できないために挿入しようとします。

キーが失敗した場合、いくつかのクエリー/コールを行わずに、次の要素を挿入して続行しないでください。私は1つのクエリでそれを行うことを好むだろう。

ありがとうございました!宜しくお願いします!

+1

トライINSERTが – CSK

+0

をIGNORE設定構文は 'MySQL'特有であり、標準的な' SQL'ではありませんので、将来あなたのデータベースを移植したいのであれば注意してください。 – apokryfos

+0

迅速な回答ありがとうございます。 IGNORE Unfortuately does not work:#1452 - 子行を追加または更新できません:外部キー制約が失敗しました(Database.UserConnected、CONSTRAINT UID2_ibfk_2 FOREIGN KEY(UID2)REFERENCES UserAccount(UID)ON CASCADE ON DELETE CASCADE)利用できないユーザーの挿入値を手動で削除しますが、クエリは動的になります。利用可能なすべてのユーザーアカウントを挿入して未知の行をスキップする方法が必要です。 – SomehowLuke

答えて

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

これを試してみてください。 –

+0

ありがとうございました。外部キー制約が失敗する( 'Database'.UserConnected'、CONSTRAINT'UID2_ibfk_2')外部キー(' UID2')参照 'UserAccount'(' 'UserAccount'') UID')は、CASCADEのON CASCADEを削除します。 利用できないユーザーのInserValueを削除すると動作します。 – SomehowLuke

+0

np、それはすべて修正されています。 –

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

あなたは最後の値にカンマが欠けているあなたは、私がこのことを指摘したいと思いますMySQL` `に加えてSQL``としてこれをタグ付けしましたので

+0

残念ながらコピーしてエラーを単純化します;) – SomehowLuke