Использование ограничения PRIMARY KEY целесообразно в следующих случаях:
■ Один или несколько столбцов в таблице должны уникально идентифицировать каждую строку (сущность) в таблице.
■ Один из столбцов в таблице является столбцом идентичности.
Вы создаете ограничения PRIMARY KEY с помощью раздела CONSTRAINT в операторах CREATE TABLE и ALTER TABLE.
В следующем коде демонстрируется оператор Transact-SQL, используемый для создания таблицы HumanResources.Departmentбазы данных AdventureWorks. Раздел CONSTRAINT определяет кластерное ограничение первичного ключа PK_Department_DepartmentIDна столбецDepartmentID.
Ограничение умолчания DEFAULT вводит значение в столбец, когда он не определен в операторе INSERT. Ограничение DEFAULT реализует целостность домена.
Перед использованием ограничения DEFAULT учтите следующие факты:
■ Ограничение DEFAULT срабатывает только на оператор INSERT.
■ Каждый столбец может иметь только одно ограничение DEFAULT.
■ У столбца со свойством IDENTITY или типом данных rowversionне может быть ограничения DEFAULT.
■ Ограничение DEFAULT позволяет вместо пользовательских значений использовать некоторые системные переменные и функции: USER, CURRENT_USER, SESSION_USER, SYSTEM_USER, или CURRENT_TIMESTAMP.
Используйте ограничение DEFAULT когда:
■ данные, хранимые в столбце, имеют очевидное значение по умолчанию.
■ столбец не принимает null значения.
■ столбец не является уникальным.
Вы создаете ограничение DEFAULT при использовании раздела уровня столбца CONSTRAINT в операторах CREATE TABLE и ALTER TABLE. Следующий код показывает оператор Transact-SQL, создающий таблицу Production.Location в базе данныхAdventureWorks. В примере создаются ограничения DEFAULT для столбцов CostRate.Availability, и ModifiedDate.
CREATE TABLE [Production].[Location](
[LocationID] [smallint] IDENTITY(1,1) NOT NULL,
[Name] [dbo].[Name] NOT NULL,
[CostRate] [smallmoney] NOT NULL CONSTRAINT
[DF_Location_CostRate] DEFAULT ((0.00)),
[Availability] [decimal](8, 2) NOT NULL CONSTRAINT
[DF_Location_Availability] DEFAULT ((0.00)),
[ModifiedDate] [datetime] NOT NULL CONSTRAINT [DF_Location_ModifiedDate]