2016-11-11 6 views
0

ステートメントへの単純な挿入を試みたが、外部キーの関係エラーが発生しました。intoステートメントエラーを試す

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

私は取得していますエラーが ある "子行を追加または更新できません:外部キー制約が( 'example_1010 .注文,CONSTRAINT orders_ibfk1 FOREIGN KEY (のuserId ) REFERENCESユーザー( userid`を)失敗した)"

I制約を回避するために「in節」を使用する必要があると思うが、正しく使用しているとは思わない。

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

により示唆されるようにエラーが明確に述べたようあなたの親テーブル(ユーザ)にそのUSER_IDを追加する必要があり、再び

SET FOREIGN_KEY_CHECKS=1; 

外部キーを可能にした後

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

完璧です、 usersテーブルに存在しない 'userId'を挿入することはできません。 – e4c5

+0

同じuserIdをすでにusersテーブルに挿入しようとします。 – siddaramesh

答えて

0

ちょうどあなたが追加して、他のことをする必要はありません

SET FOREIGN_KEY_CHECKS=0; 

外部キーを無効にします。あなたのクエリが@drew

+1

ですから、基本的にジャンクを挿入しますか? – Drew

+0

このケースはdbaの生活の中で何度も起こります。いつかこのタイプの修正を行う必要があります –

+2

最初に属しているデータ(親)を修正してください。その後、子供を固定します。それ以外の場合は、参照整合性を台無しにしても、それを持ってはいけません。 – Drew

関連する問題