2013-08-22 2 views

답변

1
mysql> SHOW COLUMNS FROM foo WHERE `Key` = 'PRI'; 
+-------+---------+------+-----+---------+-------+ 
| Field | Type | Null | Key | Default | Extra | 
+-------+---------+------+-----+---------+-------+ 
| id | int(11) | NO | PRI | NULL |  | 
+-------+---------+------+-----+---------+-------+ 

이제 Field 열의 기본 키 열의 이름을 읽으십시오.

이상한 점은 Key이 역 틱이어야한다는 것입니다. MySQL에서는 일반적으로 열 이름이 대소 문자를 구별하지 않지만이 경우에는 Key을 사용하지 않으면 열 이름이 작동하지 않습니다.

1

"물리적"테이블 (보기가 아님)로 작업하는 한, 테이블의 기본 키 구성 열에 대한 단일 문자열 표현 (예 : foo.bar)을 가져올 수 있어야합니다. INFORMATION_SCHEMA 데이터베이스 :

mysql> SELECT GROUP_CONCAT(CONCAT('`', COLUMN_NAME, '`')) AS `PRIMARY KEY` 
    -> FROM information_schema.KEY_COLUMN_USAGE 
    -> WHERE CONSTRAINT_NAME = 'PRIMARY' 
    -> AND TABLE_SCHEMA = 'foo' 
    -> AND TABLE_NAME = 'bar' 
    -> ORDER BY ORDINAL_POSITION; 
+--------------+ 
| PRIMARY KEY | 
+--------------+ 
| `baz`,`zoid` | 
+--------------+ 
1 row in set (0.00 sec) 

두 가지주의 사항 :

  1. 당신은 매우 많은 C를 참조 매우 긴 열 이름 또는 키가있는 경우이 주
  2. 이외의 키 작동하지 않을 수 있습니다 olumns, 당신은 GROUP_CONCAT 캡으로 실행할 수 있습니다 : 필요한 경우가 보통 set statement를 통해 세션이를 업데이트 할 수 있습니다

    mysql> SELECT @@session.group_concat_max_len; 
    +--------------------------------+ 
    | @@session.group_concat_max_len | 
    +--------------------------------+ 
    |       1024 | 
    +--------------------------------+ 
    1 row in set (0.00 sec) 
    

.

관련 문제