はい、あなたはストアドプロシージャで一時テーブルを参照することができます。
mysql> create procedure p() select * from t;
Query OK, 0 rows affected (0.03 sec)
mysql> create temporary table t as select 123 union select 456;
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> call p;
+-----+
| 123 |
+-----+
| 123 |
| 456 |
+-----+
を(MySQLの5.6.31でテスト)
しかし、最も経験豊富なMySQLのユーザーは、あなたが計画している何を避けるようにしてくださいそれらが複製を使用している場合。その理由は、スレーブが何らかの理由で再起動すると、一時テーブルが削除されるためです。したがって、テンポラリテーブルを参照している後続のUPDATE
およびINSERT...SELECT
は、テンポラリテーブルが存在しなくなったためエラーが発生します。レプリケーションストリームのエラーによりレプリケーションが停止します。
スレーブが突然再起動することは珍しいことですが、アプリが頻繁にテンポラリテーブルを作成すると、スレーブが再起動した時点でテンポラリテーブルが存在する可能性が高くなります。一時テーブルの
最良の使用は文で一時データとそれらを満たし、その後、唯一の(複製されません)SELECT
クエリで一時テーブルを使用することです。
はいこれは可能です –