it-source

뷰에서 테이블 언더레이의 기본 키를 취득하다

criticalcode 2022. 10. 21. 22:57
반응형

뷰에서 테이블 언더레이의 기본 키를 취득하다

알고 있다show tables그리고.show columns from table TABLE_NAME프라이머리 키를 얻을 수 있습니다(KeyPRI). 단, 뷰의 프라이머리 키 또는 기본 테이블의 보다 구체적인 키를 취득하려면 어떻게 해야 합니까?그 경우show columns from VIEW_NAME모든 Key 값이 비어 있습니다.

뷰를 기본 테이블에 매핑하기 위한 새로운 INFORMATION_SCHEMA 테이블이 존재합니다.VIEW_TABLE_USAGE라고 합니다.

mysql> create table mytable (id serial primary key);
Query OK, 0 rows affected (0.01 sec)

mysql> create view v as select * from mytable;
Query OK, 0 rows affected (0.00 sec)
    
mysql> select table_schema, table_name, column_name, ordinal_position
 from information_schema.view_table_usage 
 join information_schema.key_column_usage using (table_schema, table_name) 
 where table_name='mytable' and constraint_name='PRIMARY';
+--------------+------------+-------------+------------------+
| TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | ORDINAL_POSITION |
+--------------+------------+-------------+------------------+
| test2        | mytable    | id          |                1 |
+--------------+------------+-------------+------------------+

이 테이블은 MySQL 8.0.13에서 새로운 것입니다.이전 버전의 MySQL(또는 MariaDB 버전)을 사용하는 경우 이러한 information_schema 테이블이 없으므로 어떤 쿼리로도 이 정보를 얻을 수 없습니다.뷰 정의는 다양한 SELECT 구문을 가질 수 있기 때문에 복잡한 작업입니다.

mysql> select view_definition from information_schema.views where table_name='v';
+--------------------------------------------------------------+
| VIEW_DEFINITION                                              |
+--------------------------------------------------------------+
| select `test2`.`mytable`.`id` AS `id` from `test2`.`mytable` |
+--------------------------------------------------------------+

언급URL : https://stackoverflow.com/questions/71717385/get-primary-keys-of-underlaying-tables-in-a-view

반응형