2012-12-07 2 views
12

열을 자동으로 증가시키는 지 확인하기 위해 쿼리를 실행하려고합니다. 유형, 기본값, nullable 여부 등을 확인할 수 있지만 자동 증가 여부를 테스트하는 방법을 알 수는 없습니다.SQL - 열 자동 증가 여부 확인

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'my_table' 
AND COLUMN_NAME = 'my_column' 
AND DATA_TYPE = 'int' 
AND COLUMN_DEFAULT IS NULL 
AND IS_NULLABLE = 'NO' 
--AND AUTO_INCREMENTS = 'YES' 

불행하게도 비교 대상에는 AUTO_INCREMENTS 열이 없습니다 : 그 다른 것들에 대한 테스트입니다 방법은 다음이다. 그렇다면 열이 자동으로 증가하는지 테스트 할 수 있습니까?

+0

어떤 DBMS를 사용하고 있습니까? PostgreSQL? SQL Server? MySQL은? –

+0

@a_horse_with_no_name - SQL Server 및 MySQL. – Aust

+0

'SHOW CREATE TABLE my_table' – jchapa

답변

36

MySQL을 들어, EXTRA 열에서 확인하십시오 : select COLUMN_NAME, TABLE_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_SCHEMA = 'dbo' and COLUMNPROPERTY(object_id(TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 1 order by TABLE_NAME

7

MySQL을 가정 할 때 EXTRA 열은 AUTO_INCREMENT인지 여부를 나타냅니다.

| TABLE_CATALOG | TABLE_SCHEMA | ... |   EXTRA | ... | 
------------------------------------------------------------- 
|   def | db_2_00314 | ... | auto_increment | ... |

그리고 MSSQL의 경우 see here입니다.

0

은 SQL Server 작동 : sys.columnsis_identity 열을 사용, SQL Server의 경우

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'my_table' 
    AND COLUMN_NAME = 'my_column' 
    AND DATA_TYPE = 'int' 
    AND COLUMN_DEFAULT IS NULL 
    AND IS_NULLABLE = 'NO' 
    AND EXTRA like '%auto_increment%' 

실행 : 설명 'table_name'; 열에서 EXTRA를 찾고 있습니다.

+0

리퀘 스터의 문제를 해결하는 방법을 확장 할 수 있습니까? –

+0

약간 오래된 질문을 알고 있지만, 역사적으로 이상하게 생각하는 사람은 sys 스키마에 액세스하지 않으려는 경우이 솔루션이 작동하는지 확인할 수 있습니다. – Raiden616

3

:

SELECT 
    is_identity 
FROM sys.columns 
WHERE 
    object_id = object_id('my_table') 
    AND name = 'my_column'