0

私も123のテーブルを持っています:M001->M010->M123。それぞれがクライアントです。トリガーを使用して親テーブルのレコードに到達すると、次のような関数が呼び出されます。

  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

すべての助けをありがとう

4

1 に答える 1

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
于 2012-06-18T14:20:28.500 に答える