トリガを次のような機能を実行するmy表に書き込む必要があります。SQLクエリの結果をmysqlトリガのテーブル名として使用
- 行の更新、アイテムの料金をチェックする前
- 価格が最後の価格から変化した場合、別のテーブルを有するアイテムの種類と関連するから、項目名を挿入するテーブル名を選択テーブル名。
- 選択したテーブルに項目名を挿入します。
はその後、私はTypeNameTableとインサートからテーブル名を取得するためにきたアイテムの価格が変更された場合、私は、アイテムのカテゴリと対応するテーブル名を持つテーブル(TypeNameTable)をしました簡単に言えばするにはテーブル内の項目名。TypeNameTableから取得されます。 テーブル名を動的に取得すると、テーブルに挿入できません。それを行う方法を提案してください。私はエラー
ItemManager
.itemTableName存在しませんを取得BEGIN #declare countryTableName varchar(50); declare itemPrice int; declare itemTableName text; IF (New.Price != Old.Price) THEN SET countryTableName = (select `ItemManager`.`TypeNames`.`TypeTableName` from `ItemManager`.`TypeNames` where `ItemManager`.`TypeNames`.`ItemType` = NEW.ItemType); INSERT INTO `ItemManager`.itemTableName (`ItemName`, `ItemPrice`, VALUES (NEW.Name, New.Price); END IF; END$$
を:ここで私がやっているものです。あなたはCONCAT()変数にあなたのINSERT文とは、この私の知る限りのように準備された文、いろいろ書いよう
... SET @sql := CONCAT('INSERT INTO ', itemTableName, ' ... '); PREPARE stmt1 FROM @sql; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; ...
はストアドルーチンとトリガで動的に生成されたSQLを処理するための唯一の方法であることを実行することができ
あなたは、HTML –
@OMG Poniesではなく、[markdown](http://stackoverflow.com/editing-help)の使い方を知っています。貧弱なフォーマットです。私は本当にここの問題にこだわっていて、何かを考えることはできません。 –