반응형
뷰에서 테이블 언더레이의 기본 키를 취득하다
알고 있다show tables
그리고.show columns from table TABLE_NAME
프라이머리 키를 얻을 수 있습니다(Key
이PRI
). 단, 뷰의 프라이머리 키 또는 기본 테이블의 보다 구체적인 키를 취득하려면 어떻게 해야 합니까?그 경우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
반응형
'it-source' 카테고리의 다른 글
어레이에서 변경 가능한 목록을 작성하시겠습니까? (0) | 2022.10.30 |
---|---|
MySQL/MariaDB의 이진 열에서 UUID 문자열을 포맷하는 방법 (0) | 2022.10.21 |
JShell을 종료하고 명령줄로 돌아가려면 어떻게 해야 합니까? (0) | 2022.10.21 |
DIV의 내용을 인쇄합니다. (0) | 2022.10.21 |
Unix 타임스탬프 형식으로 현재 GMT 시간을 얻는 가장 쉬운 방법은 무엇입니까? (0) | 2022.10.21 |