2015-12-04 54 views
0

我正在爲我的客戶端構建一個系統更新功能,客戶端拖放一個xls表單(導出表單SAP),並且該查詢基本上是TRUNCATESimport_table中的現有「項目數據」並插入來自xls的所有項目數據,現在工作正常,但我需要幫助的是編寫存儲過程,從import_table中選擇project_number並檢查project_number是否已存在於project_table中,並且如果它不存在然後從import_table插入新項目數據project_number基於IF EXIST的INSERT數據

到目前爲止我有:

CREATE PROCEDURE `update_projects`() 
CREATE DEFINER=`root`@`%` PROCEDURE `update_projects`() 
BEGIN 
    INSERT INTO `permit`.`project2`(project,description,mat,city,stat,own,est_start,est_end,constr_start,constr_end,constr_cnf,plan_order,div_code,div_long,constr_total_plan,constr_total_act) 
    SELECT OrderNo,OrderDescription,mat,MainWorkCtr,OrdUsrStatus,JobOwner,ESTStartDate,ESTEndDate,ConstrStartDate,ConstrEndDate,ConstrCNFDate,PlanningOrder,division,division_long,cons_total_plan_hrs,cons_total_act_hrs 
    FROM `permit`.`wrm100_raw` i 
    WHERE NOT EXISTS (SELECT 1 FROM `permit`.`project2` pt WHERE i.OrderNo = pt.project) 
END; 

回答

1

如果我理解正確的話,那麼你可以使用一個WHERE條款做檢查:

CREATE DEFINER=`root`@`%` PROCEDURE `update_projects`() 
BEGIN 
    INSERT INTO `db`.`project_table` (project_table columns...) 
     SELECT import_table columns... 
     FROM db.import_table i 
     WHERE NOT EXISTS (SELECT 1 
          FROM db.project_table pt 
          WHERE i.project_number = pt.project_number 
         ) 
END; 

如果關注的是複製project_number S,那麼你應該定義一個唯一的約束/索引並讓數據庫驗證數據。

+0

不錯,看起來不錯,我現在就試試。 –

+0

對於那些列永遠插不上來的延遲感到抱歉。我跑了它,它在最後一行給了我一個錯誤。我更新了主線程以顯示實際值。 –

+0

錯誤 - 鍵'PRIMARY'的重複條目'0' –