728x90


[MSSQL 참조키(Foreign Key) 설정하기]

참조키(외래키)는 데이타의 참조 무결성을 유지하기 위한 필수 조건으로 아래와 같은 특성을 가집니다.

[ 참조키의 특성 ]


1. 참조되는 테이블의 PRIMARY KEY나 UNIQUE 제약 또는 UNIQUE INDEX가 지정된 컬럼만을 참조할 수 있습니다. 
2. 참조키를 만들어도 자동적으로 색인이 만들어 지지 않습니다. 색인이 필요하면 직접만들어 써야  
   하며, 조인에 참여하는 참조키는 쿼리 속도를 고려한다면 색인을 만들어 두는것이 좋습니다. 
3. 참조키는 참조되는 테이블의 여러 컬럼을 참조할 수 있습니다. 간단히 말하면 참조되는 테이블에서 여러 컬럼이 
   모인 복합키(COMPOSITE KEY)가 사용되고 이를 참조한다면 너무나 당연한 것이겠죠?  
4. 참조키가 설정되면 실수로 데이타를 삭제하거나 변경하는 것을 방지할 수 있습니다. 
참조키를 정의하는 기본형식은 아래와 같습니다. 
[CONSTRAINT constraint_name] 
    [FOREIGN KEY] [(column[,...n])] 
    REFERENCES ref_table [(ref_column[,...n])] 
    [ON DELETE { CASCADE | NO ACTION } ] 
    [ON UPDATE { CASCADE | NO ACTION } ] 

constraint_name : 제약조건의 이름으로 데이타베이스 내에서 유일해야 합니다.

ref_table           : 참조되는 테이블 이름입니다.

ref_column        : 참조되는 컬럼또는 컬럼들입니다.

NO ACTION       : 참조되는 테이블의 행이 삭제 또는 수정되었을 경우 SQLServer에서는 오류 메시지를 띄우고, 

                        해당 작업은 롤백(RollBack)됩니다.


CASCADE           : 참조되는 테이블의 행이 삭제 또는 수정되었을 경우 이를 참조하는 테이블에서 

                         자동으로 변경되도록 설정하는 옵션입니다. 옵션을 지정하지 않으면 디폴트는 NO ACTION 입니다.

반응형
728x90

MSSQL 디스크립션 조회 상세 버전 

아 ..ㅋㅋ이것도 필요 이거는 테이블의 속성에 대한 설명이 있는내용

여러가지 많이 필요하다 먼가를 하기 위한 작업이 다른 사람이 만들어 놓은 자료를 가지고 분석하고 

나만의 것으로 만들기에는 노력이 필요한듯

/*****************************************************************************************************/

SELECT 
A.TABLE_NAME, 
C.VALUE AS TABLE_COMMENT,
A.COLUMN_NAME, A.DATA_TYPE, 
ISNULL(
CAST(A.CHARACTER_MAXIMUM_LENGTH AS VARCHAR),  
CAST(A.NUMERIC_PRECISION AS VARCHAR) + ',' +
CAST(A.NUMERIC_SCALE AS VARCHAR)
) AS COLUMN_LENGTH,
A.COLUMN_DEFAULT, A.IS_NULLABLE,
B.VALUE AS COLUM_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS A 
LEFT OUTER JOIN SYS.EXTENDED_PROPERTIES B ON B.major_id = object_id(A.TABLE_NAME) 
AND A.ORDINAL_POSITION = B.minor_id
LEFT OUTER JOIN 
(
SELECT object_id(objname) AS TABLE_ID, VALUE
FROM ::FN_LISTEXTENDEDPROPERTY(NULL, 'User','dbo','table',NULL, NULL, NULL)
) C ON object_id(A.TABLE_NAME) = C.TABLE_ID
WHERE A.TABLE_NAME IN (
/* 여기에 테이블명 입력 */
)
ORDER BY A.TABLE_NAME, A.ORDINAL_POSITION

/*****************************************************************************************************/

반응형
728x90

[ MS-SQL 을 사용하다 보면 다음과 같이 저장되어 있는 테이블에 대한 정의를 보고 싶을때 조회 방법]

MS-SQL 사용하다 보면 장점과 단점이 난무하는 아 힘들구나~~~개발로 먹고 살기는~

나만의 것으로 만들기 위해서 노력하자 노력하면 노력한만큼 얻는게 있다

 /*****************************************************************************************************/

select  distinct a.table_name, 
         c.value as table_comment
from   information_schema.columns a 
         left outer join sys.extended_properties b on b.major_id = object_id(a.table_name) 
         and a.ordinal_position = b.minor_id
         left outer join  (
                                 select object_id(objname) as table_id, value
                                  from ::fn_listextendedproperty(null, 'user','dbo','table',null, null, null)
                             ) c on object_id(a.table_name) = c.table_id

 /*****************************************************************************************************/

반응형

+ Recent posts