2012-06-18 40 views
0

我也有123個表:M001 - > M010 - > M123。 每個客戶端。當達到記錄與觸發父表調用這樣的功能:Mysql - Concat - 程序執行失敗

Declare MasterX int; 
    Set MasterX = New.Master; 
    Call Lecturas_Insertar(MasterX,New.Id); 

這是我的函數:

BEGIN 

#Set Master 
    If MasterX < 10 Then 
    Set MasterX = Concat("lecturas.M00",MasterX); 
    End If; 
#Set Master 
    If MasterX Between 10 and 99 Then 
    Set MasterX = Concat("lecturas.M0",MasterX); 
    End If; 

    set @a=concat("INSERT INTO ",MasterX, "(Id) Values(" ,Id, ")"); 
    PREPARE stmt1 FROM @a; 
    EXECUTE stmt1; 
    DEALLOCATE PREPARE stmt1; 

END 

但它總是拋出我下面的錯誤:

Procedure execution failed 
    1146 - Table 'lecturas.M' does not exist 

感謝您的幫助所有

+0

您用'lecturas.M0'字符串串聯'MasterX'數值。你期望什麼? – Devart

+0

可以保存表中的記錄lecturas.M00123或lecturas.M0013或lecturas.M001,取決於MasterX – Javier

回答

1

試試這個腳本 -

BEGIN 
    SET @a = CONCAT('INSERT INTO lecturas.M', LPAD(MasterX, 3, 0), '(Id) Values(', Id, ')'); 
    PREPARE stmt1 FROM @a; 
    EXECUTE stmt1; 
    DEALLOCATE PREPARE stmt1; 
END 
+0

優秀!工作,謝謝 – Javier