2014-02-17 1 views
0

참고 선택시 : 책의 ID는 제목입니다이상한 외래 키 제약 조건 위반이 부모 테이블에서 경우

insert ignore into category_book 
select 1 as user_id, 'name' as category_name, b.id as book_id 
from book b 
where b.id regexp('word') AND b.id IS NOT NULL 

내가 얻을 :

는 MySQL은 오류 1452 : 추가하거나 업데이트 할 수 없습니다 자식 행 : 외래 키 제약 조건이 실패

(. book category_book, CONSTRAINT fk_category_book_book1 FOREIGN KEY ( book_id)는 UPDATE CASCADE ON DELETE CASCADE ON) book ( id를 참조)
+0

'category_book'의 정의는 무엇입니까? 열의 순서가 맞습니까? 삽입하려는 열을 명시 적으로 나열하는 것은 ** 항상 ** 좋은 생각입니다. 스키마 변경 사항에 대해 코드를 증명할뿐 아니라 코드를 읽는 모든 사람이 어디에 삽입되는지 즉시 알 수 있습니다. – GarethD

+0

당신은 _sure_'category_book'에'user_id, category_name, book_id'라는 필드가 있습니까? select에서 그것들을 명명하는 것은 거의하지 않는다. INSERT INTO category_book (user_id, category_name, book_id) SELECT ... '를 지정하고 싶을 수도있다. – Wrikken

+0

select 문에서 열 순서를 잘못 지정했다는 문제가 수정되었다. book_id, category_name, user_id 여야합니다. @Wrikken 지적 해 주셔서 감사합니다. – edward

답변

0

table_id가 book_id가 아닌 category_book에 레코드를 삽입하려는 것 같습니다. category_book 열 순서가 선택 항목에서 제공하는 열 순서와 다를 수 있습니다. 동일한 쿼리를 시도하지만 insert 절의 열을 나타냅니다.