사용자 정의 테이블 형식

SQL Server 2008에서 사용자 정의 테이블 형식은 테이블 구조의 정의를 나타내는 사용자 정의 형식입니다. 사용자 정의 테이블 형식을 사용하여 저장 프로시저 또는 함수의 테이블 반환 매개 변수를 선언하거나 저장 프로시저 또는 함수의 본문이나 일괄 처리에 사용할 테이블 변수를 선언할 수 있습니다. 테이블 구조를 정의하는 방법은 CREATE TABLE(Transact-SQL)을 참조하십시오.

사용자 정의 테이블 형식을 만들려면 CREATE TYPE 문을 사용합니다. 사용자 정의 테이블 형식의 데이터가 특정 요구 사항을 충족하는지 확인하려면 사용자 정의 테이블 형식에 대해 UNIQUE 제약 조건과 기본 키를 만들면 됩니다.

사용자 정의 형식과 연결된 카탈로그 뷰에 대한 자세한 내용은 sys.typessys.table_types를 참조하십시오.

제한 사항

사용자 정의 테이블 형식에는 다음과 같은 제한 사항이 있습니다.

  • 사용자 정의 테이블 형식은 테이블의 열이나 구조적 사용자 정의 형식의 필드로 사용할 수 없습니다.

  • 사용자 정의 테이블 형식을 기반으로 하는 별칭 형식

  • [NOT FOR REPLICATION] 옵션을 사용할 수 없습니다.

  • CHECK 제약 조건을 사용하려면 계산 열이 지속형 계산 열이어야 합니다.

  • 계산 열의 기본 키가 PERSISTED 및 NOT NULL이어야 합니다.

  • 사용자 정의 테이블 형식에 대해 PRIMARY KEY 또는 UNIQUE 제약 조건을 만드는 과정에서 생성되는 경우가 아니면 사용자 정의 테이블 형식에 대해 비클러스터형 인덱스를 만들 수 있습니다. SQL Server에서는 인덱스를 사용하여 UNIQUE 또는 PRIMARY KEY 제약 조건을 강제로 적용합니다.

  • 사용자 정의 테이블 형식 정의를 만든 후에는 수정할 수 없습니다.

  • 사용자 정의 테이블 형식의 계산 열 정의 내에서 사용자 정의 함수를 호출할 수 없습니다.

보안

사용자 정의 테이블 형식에 대한 권한은 Transact-SQL 키워드인 CREATE, GRANT, DENY, ALTER, CONTROL, TAKE OWNERSHIP, REFERENCES, EXECUTE, VIEW DEFINITION 및 REVOKE를 사용하여 SQL Server의 개체 보안 모델을 따릅니다.

[!참고]

테이블 형식에 대한 CONTROL 권한에는 테이블 형식에 대한 다른 모든 권한이 포함됩니다.

스키마 바인딩은 DECLARE 문이 발생하는 함수에 의해 SCHEMABINDING이 지정될 때 설정됩니다. 테이블 형식이 루틴 매개 변수이거나 SCHEMABINDING이 지정되면 사용자 정의 테이블 형식에 REFERENCES 권한이 필요합니다. 다른 모든 경우에는 스키마 바인딩 설정되지 않고 사용자 정의 테이블 형식에 REFERENCES 권한이 필요 없습니다.

사용자 정의 테이블 형식을 사용하는 테이블 변수를 선언하려면 사용자 정의 테이블 형식에 EXECUTE 권한이 필요합니다.

[!참고]

형식 정의에 사용자 정의 테이블 형식을 포함할 수 없으므로 CASCADE 옵션은 사용자 정의 테이블 형식 권한에 강제로 적용되지 않습니다.

1. 사용자 정의 테이블 형식 만들기

다음 예에서는 사용자 정의 테이블 형식을 만드는 방법을 보여 줍니다.

USE AdventureWorks2008R2;
GO

/* Create a user-defined table type */
CREATE TYPE LocationTableType AS TABLE 
( LocationName VARCHAR(50)
, CostRate INT );
GO

2. 사용자 정의 테이블 형식에 대한 권한 취소

다음 예에서는 특정 사용자 정의 테이블 형식에 대한 권한을 취소하는 방법을 보여 줍니다. JoAnna라는 사용자에서 myDatabase 데이터베이스의 관계형 스키마 mySchema 내에 있는 사용자 정의 테이블 형식 CustomerListType에 대한 REFERENCES 권한이 취소됩니다.

USE myDatabase;
GO
REVOKE REFERENCES ON TYPE::[mySchema].[CustomerListType] FROM JoAnna;
GO