Указание значений по умолчанию для столбцов
применимо: SQL Server 2016 (13.x) и более поздних версий
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Платформенная система аналитики (PDW)
базы данных SQL в Microsoft Fabric
С помощью SQL Server Management Studio (SSMS) можно указать значение по умолчанию, введенное в столбец таблицы. По умолчанию можно задать с помощью обозреватель объектов или выполнения Transact-SQL.
Если значение по умолчанию не назначено столбцу, а пользователь оставляет столбец пустым, а затем:
Если задать параметр, позволяющий разрешать значения NULL,
NULL
вставляется в столбец.Если параметр не задан для разрешения значений NULL, столбец остается пустым, но пользователь или приложение не сможет вставить строку, пока не будет задано значение для столбца.
Вы можете использовать ограничение по умолчанию для различных задач, чтобы обеспечить согласованность данных на уровне базы данных:
- Задайте значение строки для столбца "активный" или "включить" на
1
при вставке. - Установите значение для поля даты на текущую дату.
- Установите значение строки для поля в детерминированной системной функции, например
DB_NAME()
.
Ограничения
Перед началом работы необходимо учесть следующие ограничения:
Если запись в поле "Значение по умолчанию" заменяет привязанное значение по умолчанию (которое отображается без скобки), вам будет предложено отменить привязку по умолчанию и заменить его новым значением по умолчанию.
Чтобы ввести текстовую строку, заключите значение в одинарные кавычки (
'
). Не используйте двойные кавычки ("
), так как они зарезервированы для идентификаторов кавычки.Чтобы задать численное значение по умолчанию, введите число без одинарных кавычек.
Чтобы задать объект или функцию, введите имя объекта или функции без двойных кавычек.
В Azure Synapse Analytics для ограничения по умолчанию можно использовать только константы. Выражение нельзя использовать с ограничением по умолчанию.
Разрешения
Действия, описанные в этой статье, требуют ALTER
разрешения на таблицу.
Использование СРЕДЫ SQL Server Management Studio для указания значения по умолчанию
С помощью обозреватель объектов в SSMS можно указать значение по умолчанию для столбца таблицы. Для этого выполните следующие шаги:
Подключитесь к экземпляру SQL Server в SSMS.
В обозревателе объектов щелкните правой кнопкой мыши таблицу со столбцами, масштаб которых необходимо изменить, и выберите Конструктор.
Выберите столбец, для которого нужно задать значение по умолчанию.
На вкладке Свойства столбца введите новое значение по умолчанию в свойстве Значение по умолчанию или привязка .
Чтобы задать численное значение по умолчанию, введите число. Введите имя объекта или функции. Для буквенно-цифрового значения по умолчанию введите значение внутри отдельных кавычки.
В меню Файл выберите пункт Сохранить <имя таблицы>.
Использование Transact-SQL для указания значения по умолчанию
Существует несколько способов, которые можно указать значение по умолчанию для столбца с помощью T-SQL. В каждом из следующих примеров можно открыть новый запрос Transact-SQL с помощью этих действий.
В обозревателе объектов подключитесь к экземпляру ядра СУБД.
На стандартной панели выберите пункт Создать запрос.
Скопируйте и вставьте пример в окно запроса и нажмите кнопку "Выполнить".
Использование именованного ограничения
При работе с проектами базы данных рекомендуется создавать ограничения с именами. В противном случае ограничение по умолчанию присваивается системному имени, которое будет отличаться в каждой среде SQL Server, в которой создаются объекты базы данных.
CREATE TABLE dbo.doc_exz (
column_a INT,
column_b INT CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50
);
Использование ALTER TABLE
Можно добавить именованное ограничение в существующую таблицу с ALTER TABLE
.
CREATE TABLE dbo.doc_exz (
column_a INT,
column_b INT
); -- Allows nulls.
GO
INSERT INTO dbo.doc_exz (column_a)
VALUES (7);
GO
ALTER TABLE dbo.doc_exz
ADD CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50 FOR column_b;
GO
Использование CREATE TABLE
Вы можете создать новую таблицу с ограничениями по умолчанию с помощью CREATE TABLE
.
CREATE TABLE dbo.doc_exz (
column_a INT,
column_b INT CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50
);
Установить дату создания
В следующем примере используется системная функция sysdatetimeoffset()
для заполнения значения строки столбца dateinserted
датой создания строки.
CREATE TABLE dbo.test (
id INT identity(1, 1) NOT NULL CONSTRAINT PK_test PRIMARY KEY
,date_inserted DATETIMEOFFSET(2) NOT NULL CONSTRAINT DF_test_date_inserted DEFAULT(sysdatetimeoffset())
);
Ограничение по умолчанию не изменяется при обновлении строки. Чтобы обновить значение всякий раз при изменении строки, рассмотрите использование триггера , темпоральной таблицы , вычисляемого столбца или двоичной строки rowversion . Рекомендуется также вставлять строки, выполняя хранимые процедуры вместо непосредственной вставки строк, где хранимые процедуры могут применять бизнес-логику, значения по умолчанию и другие правила согласованности данных.
Чтобы определить строки, которые изменяются, рассмотрите возможность захвата данных об изменениях (CDC), отслеживания изменений, темпоральной таблицыили таблицы реестра.