예, 저장 프로 시저에서 임시 테이블을 참조 할 수 있습니다 :
이
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
쿼리에서 임시 테이블을 사용하는 것입니다.
예 가능할 것입니다. –