Posts Tagged ‘IDENTITY’

[MSSQL2K] COLUMNPROPERTY

May 22nd, 2008

 

COLUMNPROPERTY

열 또는 프로시저 매개 변수에 대한 정보를 반환합니다.

구문

COLUMNPROPERTY ( id , column , property )

어제 고민하던 문제들은 이 Function을 통해서 손쉽게 해결이 가능하다.
IsIdentity 와 같은 PROPERTY들이 존재하는데 자세한건 온라인 도움말을 확인하자.

어제와 같은 IDENTITY 컬럼여부 파악은,

SELECT A.NAME, B.NAME
FROM SYSOBJECTS A JOIN SYSCOLUMNS B
ON A.ID = B.ID
WHERE COLUMNPROPERTY(A.ID,B.NAME,’IsIdentity’) = 1
GO

처럼 하면 된다고 한다.

[MSSQL2K] IDENTITY 속성컬럼 포함한 TABLE 파악하기

May 21st, 2008

나를 시험에 들게하지 마옵시고.
했으나 뜻과는 무관하게 오늘 여러가지 시험이 닥쳐들었다.

MSSQL 서버 2005에는 DB내의 전체 OBJECT를 관리하는 SYSOBJECTS 테이블에 IS_IDENTITY 라는 컬럼이 존재하는 것 같으나 구버젼인 2000에는 존재하지 않는다. 피똥싸는거다.

시스템 테이블을 아무리 뒤져봐도 IDENTITY와 관련된 정보를 포함한 컬럼은 존재하지 않는다.
정답은 의외로 간단한 온라인도움말(F1)에 있었으니,

SELECT NAME, IDENT_INCR(NAME),IDENT_SEED(NAME) AS IDENT_INCR , COUNT(NAME)
FROM SYSOBJECTS
WHERE IDENT_INCR(NAME) IS NOT NULL AND NAME LIKE ‘TB_%’
GROUP BY NAME
WITH ROLLUP
GO

IDENT_INCR([테이블이름], INDENT_SEED([테이블이름])

IDENT_SEED

ID 열이 있는 테이블이나 뷰에서 ID 열을 만드는 동안 지정된 시드 값(numeric(@@MAXPRECISION,0)으로 반환됨)을 반환하는 예제입니다

IDENT_INCR

ID 열이 있는 테이블이나 뷰에서 ID 열을 만드는 동안 지정된 증분 값(numeric(@@MAXPRECISION,0)으로 반환됨)을 반환합니다

요 두값이 0이 아니라면 IDENTITY가 존재한다는 얘기가 된다고 한다.
따라서 위의 쿼리의 정확성이 보장된다….는 말인것 같다.