2016-08-10 1 views
2

기본 키가있는 경우에만 삭제할 수있는 쿼리가 필요합니다.기본 키가있는 경우 기본 키가 누락됩니다.

이것은 존재하지 않지만 다른 데이터베이스에서 쿼리를 실행해야하는 경우 오류를 반환합니다.

+0

'INFORMATION_SCHEMA'를 살펴보고 기본 키가 먼저 있는지 확인한 다음 기본 키가 있으면 삭제하십시오. 단일 쿼리로 수행 할 수 없습니다. – Raptor

답변

1

나는 이것을 사용하는 것이 좋습니다 것입니다 :

SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.',TABLE_NAME, 
' DROP PRIMARY KEY; ANALYZE TABLE ', TABLE_SCHEMA, '.',TABLE_NAME, ';') 
FROM information_schema.COLUMNS 
WHERE CONCAT(TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME) IN 
    (SELECT CONCAT(TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME) 
    FROM INFORMATION_SCHEMA.STATISTICS 
    WHERE INDEX_NAME = 'PRIMARY' -- *Required* to get only the primary keys from the statistics table. 
    -- *Optional* 
    AND TABLE_SCHEMA = 'clients_database'); 
  • 실행이이 필요한 SQL을 생성 할 수 있습니다.
  • 결과를 복사 한 다음 작동중인 쿼리로 실행하십시오.
  • 이 표는 옵션뿐만 아니라 WHERE 절입니다 분석 할 수 있습니다.
  • 원할 경우 아래 검색어에서 ANALYZE TABLE ', TABLE_SCHEMA, '.',TABLE_NAME, ';'을 삭제할 수 있습니다.

저는 표준화 기법을 연구하고 이용할 때 information_schema를 사용합니다. 만약 당신이 필요하거나 테이블과 컬럼에 대해 알고 싶은 것

Just about 모든

데이터베이스/TABLE_SCHEMA 중 하나 (해당되는 경우) 일부 시스템 테이블에 살고 :

은 기본적으로 을 숨겨져 있습니다. 개체 브라우저에서 목록에 표시 메타 데이터 및 내부 스키마 환경 설정을 전환합니다. "."로 시작되는 스키마 또한이 설정으로 제어됩니다.

참고 :이 도움이 Here's something similar that has been created.

희망!

첫번째로 이동 : 'YourDatabase'> 테이블> 테이블 이름>과 같은 키> 복사 제약 '

건배,

제이

-1

나는 쉬운 옵션이있을 것 같아요 PK__TableName__0001 '

다음이 실행

Query:alter Table 'TableName' drop constraint PK__TableName__0001

관련 문제