Create list relationships by using unique and lookup columns

You can create relationships between lists by using a combination of unique columns, lookup columns, and relationship enforcement (cascade and restrict delete), all of which enhance your ability to create more sophisticated business solutions and help preserve the integrity of your data.

In this article


Overview of list relationships

The following sections provides important background information about creating relationships between source and target lists, creating unique and lookup columns, enforcing list relationship behavior, adding primary and secondary lookup columns, viewing, editing, and deleting items within list relationships, managing list relationships when lists have many items, and the additional benefits of using an editing program such as Microsoft SharePoint Designer 2013.

Using unique and lookup columns to process gift orders.

An overview of list relationships

Callout 1 The Items list is the source list and the Orders list is the target list.
Callout 2 Each list has unique columns to ensure that the correct data is matched.
Callout 3 The primary lookup column in the source list "looks up" the Order ID column in the target list based on a matching value.
Callout 4 A secondary lookup column in the source list automatically inserts the Orders Description column from the target list.

Top of Page Top of Page

Creating unique columns

When you create a column, you can specify that the column must contain unique values. This means that the list cannot have any duplicate values in that column. You cannot add a list item that contains a duplicate value, modify an existing list item that would result in creating a duplicate value, or restore an item from the Recycle Bin if it would result in a duplicate value. Furthermore, if you create a lookup column in a source list, and you define that column to be unique, the column in the target list must not contain duplicate values.

 Note    Uniqueness is not case-sensitive, so for example, ORD-231 and ord-231 are considered duplicate values.

A unique column must also have an index. When you create a unique column, you may be prompted to create the index and it is automatically created when you click OK. Once a unique column has an index, you cannot remove the index from that column, unless you first redefine the column to allow duplicate values.

The following table summarizes what column types can and cannot be used to create unique columns.

Supported Column Types Unsupported Column Types
Single line of text Multiple lines of text
Choice (single value) Choice (multi-valued)
Number Calculated
Currency Hyperlink or Picture
Date and Time Custom Columns
Lookup (single value) Lookup (multi-valued)
Person or Group (single value) Person or Group (multi-valued)
Yes/No

Top of Page Top of Page

Creating lookup columns

To create a relationship between two lists, in the source list, you create a lookup column that retrieves (or "looks up") one or more values from a target list if those values match the value in the lookup column in the source list. Once you create this lookup column (the primary column), you can continue to add additional columns (secondary columns) from the target list to the source list, as long as those additional columns have a supported data type described below.

The following table summarizes what column types can and cannot be used to create lookup columns.

Supported Column Types Unsupported Column Types
Single line of text Currency
Multiple lines of text Lookup
Choice Person or Group
Number Calculated
Date and Time Hyperlink or Picture
Yes/No Custom Columns

There are two types of lookup columns that you can create, a lookup column with an enforced relationship and a lookup column with an unenforced relationship.

Top of Page Top of Page

A lookup column with an enforced relationship

In a lookup column with an enforced relationship (also called referential integrity), you can lookup single values and maintain the integrity of your data in the target list in one of two ways:

Cascade Delete    When an item in the target list is deleted, the related item or items in the source list are also deleted. In this case, you want to make sure that all related items are deleted as part of one database transaction. For example, if you delete an order in a target list, you can ensure that the corresponding order items in the source list is also deleted. You don't want to have order items without a corresponding order, because that would create "orphan" order items that might cause confusion later on.

Restrict Delete    When you try to delete an item in the target list, and it has one or more related items in the source list, you are prevented from deleting the item in the target list. In this case, you want to ensure that the related item in the target list is preserved. For example, if someone tries to delete an order item from a target list, a customer might still have that order pending, and you want to prevent that delete operation from occurring until the order has been processed. You don't want the customer’s order to be accidentally deleted because that would affect your ability to complete the order.

Enforcing list relationships

Callout 1 A cascade delete operation ensures all related items are deleted in one database transaction.
Callout 2 A restrict delete operation prevents deleting items in the target list if related source list items exist.

In short, enforcing a list relationship behavior helps keep your data valid and helps prevent inconsistencies that might cause problems down the road.

 Note    You must have Manage Lists permission on a list to create or modify an enforced relationship.

A lookup column that enforces a relationship must also have an index. When you create a lookup column that enforces a relationship, you might be prompted to create the index, and it is automatically created when you click OK. Once a lookup column that enforces a relationship has an index, you cannot remove the index from that column, unless you first remove the enforced relationship.

Top of Page Top of Page

A lookup column with an unenforced relationship

In a lookup column with an unenforced relationship, from the source list, you can lookup single or multiple values in the target list. Also, when you delete an item in the source list, as long as you have delete permission on the list, there are no additional delete restrictions or delete operations that occur in the target list.

Top of Page Top of Page

Viewing and editing items in list relationships

One of the beneficial effects of creating list relationships is that you can display and edit columns from two or more lists, on one page. When you create a lookup column in a source list, the primary column displays values from the target list column, but you can also specify that additional, secondary columns from the target list also display alongside the primary column and the other source list columns.

The primary column value is a link that you can click to the display all the column values of that item in the target list. Each secondary column value from the target list displays as text in the source list column. If you create a lookup column with multiple values, each column from the target list, whether primary or secondary, display their multiple corresponding values delimited by semicolons. You can manipulate these primary and secondary columns in list view in much the same way as the columns from the source list, by, for example, adding, removing, filtering, and sorting them.

The primary column name is a name you provide when you create the lookup column. By default, each secondary column name follows a standard naming convention of <primary column name in source list>: <column name in target list>. Changing the name of the primary column, therefore, changes the names of all secondary columns. However, you can modify the default secondary column names and descriptions to make the names more meaningful to you.

Lookup columns with multiple values

Callout 1 A primary lookup column with multiple values.
Callout 2 A secondary lookup column with multiple values.
Callout 3 The column name has been changed from the default name of GetID: Title to Instruments.

Top of Page Top of Page

Deleting items and lists in a list relationship

If you want to delete items or lists in a list relationship, then you need to be aware of the consequences of doing this operation on the source and target lists and any related columns, especially if the lists have an enforced relationship of restrict delete or cascade delete. To maintain the integrity of the data, you may be blocked from deleting items even when you have delete permission. Deleting these items also requires the backend database to temporarily lock the data when performing the delete transaction, which can take time to complete.

The following sections describe what happens in more detail.

Delete a source or target list item with an unenforced relationship    When you try to delete a source or target list item that does not have an enforced relationship, then the following occurs:

  • You can remove the item from the source or target list.
  • The related item in the target or source list is not deleted.

Delete a source list item with an enforced relationship of restrict delete    When you try to delete an item in the source list with an enforced relationship of restrict delete, then the following occurs:

  • You can remove the item from the source list.
  • The related item in the target list is not deleted

Delete a target list item with an enforced relationship of restrict delete    When you try to delete an item in the target list with an enforced relationship of restrict delete, then the following occurs:

  • You receive an error message that the column is used to enforce the restrict delete operation.
  • You cannot delete the target list item, even if you have delete permission on this item.

Delete a source list item with an enforced relationship of cascade delete    When you try to delete an item in the source list with an enforced relationship of cascade delete, then the following occurs:

  • You can then delete the item in the source list.
  • The related item in the target list is not deleted.

Delete a target list item with an enforced relationship of cascade delete    When you try to delete an item in the target list with an enforced relationship of cascade delete, then the following occurs:

  • You can delete the item in the target list and all related items in the source list.
  • The delete operation occurs as a database transaction, which means that the entire delete operation must complete to ensure that neither list is left in an invalid state.

 Note    In the case of a Document Library, if the item in the source list is a checked out file, both items are still deleted.

Delete a source or target list with an unenforced relationship    When you try to delete a source and target list with an unenforced relationship, then you can delete either the source list or the target list, just like any other list.

Delete a source or target list with an enforced relationship of cascade or restrict delete    When you try to delete a source or target list with an enforced relationship of cascade or restrict delete, the following occurs:

  • You receive a warning that the source or target list has one or more relationships with other lists, and those lists are displayed in the warning message.
  • You cannot delete the source or target list.

Restoring from the Recycle Bin    If the Recycle Bin is enabled on your site, then all deleted items are stored in the recycle bin, and you can restore them if you need to. If the items were deleted in one database transaction as part of a cascade delete operation, all items in the relationship are displayed, and you can restore them as well. However, the original target and source lists must still exist, or else the items cannot be restored.

To summarize:

  • When an item in the target list is deleted, a cascade delete operation also deletes all related items in the source list.
  • When you try to delete an item in the target list, a restrict delete operation will prevent you from deleting the item in the target list if it has one or more related items in the source list.
  • You cannot delete lists participating in an enforced relationship.

Top of Page Top of Page

Managing list relationships when lists have many items

When you create list relationships by using lookup columns, unique columns, and lists with enforced relationships, you can reach a resource threshold or limit and may be blocked under the following circumstances:

  • If you make a column unique in an existing list that has more items than the List View Threshold (but note that adding one item to a list that makes the list greater than the List View Threshold is an operation that is not usually blocked).
  • If you turn on Cascade Delete or Restrict Delete for a lookup field in a list that has more items than the List View Threshold.
  • You have exceeded the List View Lookup Threshold, which by default is eight lookup columns.
  • The number of items in a delete operation exceeds 1,000.

Find more information about thresholds and limits and managing lists and libraries with many items in the See Also section.

Top of Page Top of Page

How to: Create or modify a unique column

 Warning    You cannot create a unique column in a list with item-level permissions defined, you cannot break inheritance of permissions from a list to a list item if the list contains a unique column, you cannot create a unique column or modify a column to be unique in a list that contains items with unique permissions or one that has content approval enabled, and you cannot copy a file to a library by using the Open with Explorer command, if that library contains a unique column.

  1. Navigate to the site containing the list.
  2. Click the name of the list on the Quick Launch, or on the Settings menu Options button , click View All Site Content, and then under the list section, click the name of the list.
  3. Click List > Create Column.
  4. In the Columns Name box, type a name for the column.
  5. Under The type of information in this column is, click one of the following:
  • Single line of text
  • Multiple lines of text
  • Choice
  • Number
  • Currency
  • Date and Time
  • Yes/No
  • Lookup (single value)
  • Person or Group (single value)
  1. In the Additional Column Settings section, under Enforce unique values click Yes.
    If you select a data type that is not supported, or of you are creating a lookup column that allows multiple values, the Enforce unique values is not displayed.


 Notes 

  • You cannot remove the index of a unique column. If you want to remove the index, you must change the column from a unique column to one that allows duplicate values first, and then remove the index.
  • If you try to change an existing column from duplicate values to unique values, you may be prevented from doing this operation if the existing column contains duplicate values. In this case, you must remove all the duplicate values first, and then change the column from allowing duplicate values to a unique column.
  • If you want to change the data type of the unique column, you must do the following: change the column to allow duplicate values, remove the index, change the column to the other supported data type, and then make the column unique.

Top of Page Top of Page

How to: Create a lookup column

  1. Navigate to the site containing the list.
  2. Click the name of the list on the Quick Launch, or on the Settings menu Options button , click View All Site Content, and then under the list section, click the name of the list.
  3. Click List > Create Column.
  4. In the Columns Name box, type a name for the column.
  5. Under The type of information in this column is, click Lookup.
  6. In the Get information from box, select a target list.
  7. In the In this column box, select a primary column.
  8. Under Add a column to show each of these additional fields, for each secondary column you want to add, click the check box next to the column name. Only columns with supported data types are listed.
  9. Later on if you want to add or remove secondary columns, modify the lookup column and make the selections you want.

 Note    You cannot index a secondary column nor can you make a secondary column unique.

  1. If you want the lookup columns to display in the default view, select Add to default view.
  2. To create an enforced relationship, select Enforce relationship behavior and then click Restrict Delete or Cascade Delete.
  3. Click OK.

Top of Page Top of Page

How to: Create relationships in the display and edit forms

Once you create a lookup column, you can modify the display and edit forms of the target list so that related data from the source list is displayed. For example, you can edit the display or edit page for the Orders list to add the related Items list and automatically connect the two corresponding List View Web Parts together by the passing the Lookup column value.

  1. In the target list (for example, Orders) click List > Modify Form Web Parts > Default Display Form or Default Edit Form.
  2. In the Main Web Part Zone, click Add Web Part.
  3. Click Insert > Related List, and then select the related list (for example, Items).

 Note    Only lists for which you have View Items permission are displayed.

The two lists are automatically connected. After you save the page, when you display or edit an item from the Orders list, the related items in the Items list also display.

Top of Page Top of Page

 
 
Applies to:
SharePoint Foundation 2013, SharePoint Online Enterprise (E1), SharePoint Online Enterprise (E3 & E4), SharePoint Online Midsized Business, SharePoint Online operated by 21Vianet - Enterprise (E1 & E2), SharePoint Online operated by 21Vianet - Enterprise (E3 & E4), SharePoint Online operated by 21Vianet - Midsized Business, SharePoint Online operated by 21Vianet - Small Business, SharePoint Online Small Business, SharePoint Server 2013 Enterprise