2012-04-10 5 views
0

다음은 시나리오입니다. 2 개의 테이블과 2 개의 임시 테이블이 있습니다. 공식 테이블에 사용자 데이터를 삽입하기 전에이를 임시 테이블에 삽입하여 검사를 수행하도록합니다. 회사 정보와 company 테이블 및 연락처 정보를 가지고있는 contact 표가 있습니다. contact 표는 company 테이블에 대한 외래 키 인덱스 company_id라는 필드가 있습니다.MySQL - 외래 키 인덱스로 삽입

임시 테이블은 같은 방법으로 설정됩니다. 나는이 같은 문을 사용하여 company 테이블에 새로 삽입 된 ID에 temp_company에서 외래 키를 전송 어떻게, INSERT INTO company() SELECT * FROM temp_company;INSERT INTO contact() SELECT * FROM temp_contact

내 질문은 :

내가 좋아하는 뭔가를하고 싶어? 그것을 할 수있는 방법이 있습니까?

현재 나는 :

  1. 가 하나
  2. 한 것 임시 행을 잡아 마지막 삽입 ID를 잡는 그들에게
  3. 를 삽입
  4. 다음 새 마지막 삽입 ID로 나중에 연락처를 삽입

즉 가장 효율적인 방법입니다 경우 난 그냥 모르겠어요. 감사!

답변

0

두 테이블에 동일한 수의 열이있는 경우 해당 테이블에있는 구문을 사용할 수 있어야합니다. ()을 꺼내십시오.

INSERT INTO company SELECT * FROM temp_company; 
INSERT INTO contact SELECT * FROM temp_contact; 

당신은 또한 특히 당신이 새로운 ID로 삽입되는 열을 정확하게 지정할 수 있습니다 이런 식으로 삽입받을 열을 지정할 수 있습니다 : 그냥 중복 기본 키가 없습니다 있는지 확인하십시오.

올바른 열 수를 선택했는지 확인하십시오.

+0

유일한 문제는 내가 임시 테이블에 데이터를 빈 테이블을 채우는 있지 않다이다. 이미 많은 데이터가있는 테이블에 행을 추가하고 있습니다. –

+0

삽입하기 전에 중복 키가 있다면 잘 모르는 문제입니까? 이 경우에, 당신은 당신이 원하는 무슨에 따라, 중복 키 INGNORE' 구문에 대한 ...은'INSERT ... 중복 키 UPDATE' 또는'INSERT ON을 사용할 수 있습니다. –