我想找到在特定时间戳之前创建的所有表和视图。对于表,这很简单,只需
SELECT * FROM information_schema.tables
WHERE table_type = 'TABLE' AND create_time < :ts
但是对于视图来说,并不是那么简单。 create_time
的所有视图的information_chema.tables
列均为空。例如
MariaDB [MYDB]> SELECT IF(create_time IS NULL, 'Null', 'Not Null') AS has_create_ts
, COUNT(1)
FROM information_schema.tables
WHERE table_type = 'VIEW' GROUP BY has_create_ts;
+---------------+----------+
| has_create_ts | COUNT(1) |
+---------------+----------+
| Null | 70 |
+---------------+----------+
1 row in set, 10 warnings (0.371 sec)
information_schema.views
表没有任何时间戳列。
那么如何确定视图的创建时间呢?还是只是不可能。
如果重要的数据库版本是:
MariaDB [MYDB]> SELECT VERSION();
+--------------------+
| VERSION() |
+--------------------+
| 10.3.7-MariaDB-log |
+--------------------+
1 row in set (0.392 sec)
答案 0 :(得分:1)
那么如何确定视图的创建时间呢?还是只是不可能。
否,这是不可能的。
一个视图实际上并不包含数据,它只是由一个定义组成,即引用了 real (物理)表中包含的数据的SQL语句:因此,这就是INFORMATION_SCHEMA.VIEWS
的全部可以给你看。