2016-07-06 100 views
0

我有一個SQL查詢的PHP/MySQL和下面的問題:SQL插入跳過入門

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

所以問題是,如果有UID2的一個用戶在UserAccounts不可用(從UserConnected外鍵UserAccount)整個查詢將會中斷並且根本不會插入任何內容。

因此,讓我們說一些reaseon用戶4已被刪除,並執行此查詢,因爲該ID來自任何其他來源(讓說,Facebook或谷歌)它會嘗試插入,但它不能,因爲用戶不可用。

有沒有辦法說,如果鍵失敗,不要插入並繼續下一個元素,而不做幾個查詢/調用。我寧願在一個查詢中這樣做。

非常感謝!最好的祝福!在最後一個值

+1

嘗試INSERT忽略 – CSK

+0

既然你已經標記這是'除了'MySQL' SQL'我想指出的是,這語法是'MySQL'特定的,並不是標準的'SQL',所以要小心如果你想在未來移植你的數據庫。 – apokryfos

+0

謝謝你的快速回答。 IGNORE非常不幸地不起作用:#1452 - 無法添加或更新子行:外鍵約束失敗(Database.UserConnected,CONSTRAINT UID2_ibfk_2 FOREIGN KEY(UID2)REFERENCES UserAccount(UID)ON DELETE CASCADE ON UPDATE CASCADE)手動刪除不可用用戶的插入值,但查詢將是動態的,我需要一種方法來插入所有可用的用戶帳戶並跳過未知的用戶。 – SomehowLuke

回答

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

請試試這個,讓我知道 –

+0

謝謝你的快速回答。 IGNORE不幸地不起作用: #1452 - 無法添加或更新子行:外鍵約束失敗(''''''''UserConnected',CONSTRAINT'UID2_ibfk_2' FOREIGN KEY('UID2')REFERENCES'UserAccount'(' UID')ON DELETE CASCADE ON UPDATE CASCADE) 它適用於當我刪除I​​nserValue爲不可用的用戶 – SomehowLuke

+0

NP,如果它修復了這一切。 –

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

你缺少逗號設置

+0

對不起,複製粘貼和簡化錯誤;) – SomehowLuke