2012-07-17 8 views
0

MySql에 저장 프로 시저가 있습니다. 여기서 My_Table에 값을 삽입하려고합니다. Person_Table의 열 중 하나가 CompanyID입니다.Insert 문 MySql의 표 2에서 표 2의 자동 증가 ID를 삽입하십시오.

하지만 그 CompanyID는 Company_Table.CompanyID에서 자동으로 증가하는 기본 키입니다. 두 테이블의 열은 CompanyName입니다. Person_Table.CompanyID 열에 같은 절차로 Company+Table.CompanyID을 삽입하고 싶습니다.

2 개의 테이블을 결합하는 데 문제가 있습니다. insert 문에서 내부 조인 테이블을 사용할 수 있습니까?

이것은 내가 지금까지 무엇을 가지고 있지만, 그것은 내부 조인 좋아하지 않는다 :

 insert into person p 
    (FarmName, FirstName, MiddleName, LastName, Phone, CompanyID) 
    values 
    (oFarmName, oFirstName, oMiddleName, oLastName, oPhone, oCompanyID) 

    inner join company c on p.FarmNamne = c.CompanyName 
    where p.FarmName = c.CompanyID; 

답변

0

나는 내부 조인에 삽입 할 수 있습니다하지만 내 느낌이 불가능 말한다 여부를 대답 할 수 있습니다. 어쨌든

는, 약간의 도움을 제공하기 위해, 당신이 다른이 문제를 해결할 것을 제안 :

어떻게 당신의 첫 번째 테이블 AFTER INSERT에 트리거를 넣어 대해. 이 시점에서 자동 증분 ID는 알려지며 트리거와 함께 테이블 2에 쉽게 삽입 될 수 있습니다. 내가 제대로 질문을 이해한다면

http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html

+0

감사합니다. 나는 방아쇠를 사용하려고합니다. 그것들을 처음 사용하기 때문에 문법을 정확히 알지 못합니다. 이것은 내가 지금까지 가지고 있지만 작동하지 않습니다. ' DEFINER을 만들 = CURRENT_USER TRIGGER Assign_CompanyID 설정 한 각 행에 대해 개별 ON INSERT 전에 NEW.CompanyID = Company.CompanyID 경우 Individual.FarmName = Company.CompanyName' –

+0

이 안된하지만 개별 ON 삽입 한 후 트리거 Assign_CompanyID을 CREATE'시도 각 행에 대해 INSERT INTO name_of_table_2 SET table_2_company_id = NEW.CompanyID, table_2_another_field = NEW.another_field; 끝; – Horen

0

, 다음이 정보를 일치하도록 테이블과 열 이름을 바꾼 후 작동합니다 :이있는 경우

INSERT INTO Person_Table 
(FarmName, FirstName, MiddleName, LastName, Phone, CompanyID) 
VALUES 
(oFarmName, oFirstName, oMiddleName, oLastName, oPhone, (
    SELECT c.CompanyId FROM Person_Table p 
    INNER JOIN Company_Table c ON c.CompanyName = p.CompanyName) 
) 

이에만 작동합니다 중복 회사 이름 만하지 총을 줘.