TL;DR
-
mysqldump
とかがCREATE VIEW v1 AS SELECT 1 AS num, 1 AS val
とかいう一見VIEW定義となんの関係もないCREATE VIEW
文を吐く理由
mysqldumpは単にアルファベット順にテーブルやビューの定義を取得するので、シンプルに直接 CREATE
VIEW
を書いてしまうと順番によってはリストアに転ける。
mysql80 38> CREATE TABLE t1 (num serial, val varchar(32));
Query OK, 0 rows affected (0.04 sec)
mysql80 38> INSERT INTO t1 VALUES (1, 'one'), (2, 'two');
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql80 38> CREATE VIEW v1 AS SELECT * FROM t1;
Query OK, 0 rows affected (0.01 sec)
mysql80 38> CREATE VIEW a_v1 AS SELECT val FROM v1 WHERE num = 1;
Query OK, 0 rows affected (0.02 sec)
mysql80 38> SHOW TABLES; …
[さらに読む]