Microsoft SQL Server

User Defined Table Types

Introduction#

User defined table types (UDT for short) are data types that allows the user to define a table structure.

User defined table types supports primary keys, unique constraints and default values.

Remarks#

UDTs have following restrictions -

  • can not be used as a column in a table or a field in a structured user-defined types
  • a non-clustered index cannot be created in a UDT unless the index is the result of creating a PRIMARY KEY or UNIQUE constraint on the UDT
  • UDT definition CANNOT be modified after it is created

creating a UDT with a single int column that is also a primary key

CREATE TYPE dbo.Ids as TABLE
(
    Id int PRIMARY KEY
)

Creating a UDT with multiple columns

CREATE TYPE MyComplexType as TABLE
(
    Id int,
    Name varchar(10)
)

Creating a UDT with a unique constraint:

CREATE TYPE MyUniqueNamesType as TABLE
(
    FirstName varchar(10),
    LastName varchar(10),
    UNIQUE (FirstName,LastName)
)

Note: constraints in user defined table types can not be named.

Creating a UDT with a primary key and a column with a default value:

CREATE TYPE MyUniqueNamesType as TABLE
(
    FirstName varchar(10),
    LastName varchar(10),
    CreateDate datetime default GETDATE()
    PRIMARY KEY (FirstName,LastName)
)

This modified text is an extract of the original Stack Overflow Documentation created by the contributors and released under CC BY-SA 3.0 This website is not affiliated with Stack Overflow