devxlogo

Creating UNIQUE and PRIMARY KEY Constraints on Computed Columns

Creating UNIQUE and PRIMARY KEY Constraints on Computed Columns

Defining a UNIQUE constraint on a computed column is a straightforward process, as the following example shows:

 CREATE TABLE T1 (col1 int NOT NULL,col2 AS col1 + 1 UNIQUE)

However, if you define a PRIMARY KEY on a computed column, such as:

 CREATE TABLE T2 (col1 int NOT NULL,col2 AS col1 + 1 PRIMARY KEY)

You receive the following error:

 Server: Msg 8111, Level 16, State 2, Line 1Cannot define PRIMARY KEY constraint on nullable column in table 'T2'.Server: Msg 1750, Level 16, State 1, Line 1Could not create constraint. See previous errors.

Because of the primary key constraint, SQL Server requires you to guarantee that your computation’s result will not be NULL. The computation in the computed column can overflow (for example, when you add 1 to the largest integer) or underflow (when you subtract 1 from the smallest integer), and other computations can result in a divide-by-zero error.

The trick is to wrap the computed column’s computation with the ISNULL() function and supply an alternative value if the computation results inNULL:

 CREATE TABLE T2 (col1 int NOT NULL,col2 AS ISNULL(col1 + 1, 0) PRIMARY KEY)
See also  Professionalism Starts in Your Inbox: Keys to Presenting Your Best Self in Email
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist