2012-07-17 50 views
0

我在MySql中有一個存儲過程,其中我嘗試將值插入到Person_Table中。 Person_Table中的一列是CompanyID。在插入語句MySql中插入表2中自動遞增的ID到表1中

但我需要從Company_Table.CompanyID檢索CompanyID是一個自動遞增的主鍵。兩個表格也有列CompanyName。 我想在同一過程中將Company+Table.CompanyID插入Person_Table.CompanyID列。

我在加入2個表格時遇到問題。 Can你插入語句的內部連接表嗎?

這是我有這麼遠,但它並不像內部聯接:

 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

謝謝。我正在嘗試使用觸發器。這是我第一次使用它們,所以我不知道語法。這是我迄今爲止的但它不起作用。 'CREATE DEFINER = CURRENT_USER TRIGGER Assign_CompanyID INSERT對個人 對於每一行設置之前NEW.CompanyID = Company.CompanyID 其中Individual.FarmName = Company.CompanyName' – 2012-07-17 20:46:43

+0

這是未經測試,但嘗試'CREATE TRIGGER Assign_CompanyID INSERT ON個人AFTER FOR EACH ROW BEGIN INSERT INTO name_of_table_2 SET table_2_company_id = NEW.CompanyID,table_2_another_field = NEW.another_field; END;' – Horen 2012-07-17 20:57:20

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) 
) 

這隻會工作,如果沒有重複的公司名稱,但試一試。