2016-11-11 36 views
0

試圖做一個簡單的插入語句,但得到一個外鍵關係錯誤。試圖進入聲明錯誤

insert into orders (userId, orderDate, shippingDate) 
values('xyz123', now(), now()); 

我得到的錯誤是 「不能添加或更新子行,外鍵約束失敗(「example_1010 .訂單,CONSTRAINT orders_ibfk1 FOREIGN KEY (用戶id ) REFERENCES用戶( userid`))」

我認爲我需要使用「in clause」來繞過約束,但我認爲我沒有正確使用它。

insert into orders (userId, orderDate, shippingDate) 
values('xyz123', now(), now()) 
in (select userId from users); 
+0

正如錯誤中明確規定的建議,你不能插入users表中不存在的'userId'。 – e4c5

+0

嘗試在用戶表中已經存在相同的userId。 – siddaramesh

回答

0

只是禁用外鍵

SET FOREIGN_KEY_CHECKS=0; 

你不需要任何其他東西補充。您的查詢是完美

insert into orders (userId, orderDate, shippingDate) 
values('xyz123', now(), now()); 

後重新啓用外鍵

SET FOREIGN_KEY_CHECKS=1; 

你應該添加USER_ID在父表(用戶)由@drew

+1

那麼插入垃圾基本上? – Drew

+0

這種情況在dba的生活中發生很多次。我們必須在某個時間執行此類校正 –

+2

首先修復其所屬的數據(父級)。然後修理孩子。否則,你搞砸了你的參照完整性,甚至不應該擁有它。 – Drew